2011-11-21 11 views
7

Pracuję w R i muszę zmienić z kolumny w formacieZmiana od daty i godziny w formacie formacie numerycznym

9/27/2011 3:33:00 PM 

do formatu wartości. W programie Excel można używać funkcji value() ale nie wiem jak to zrobić w R.

Moje dane wygląda następująco:

9/27/2011 15:33 a 1 5 9 
9/27/2011 15:33 v 2 6 2 
9/27/2011 15:34 c 3 7 1 
+3

Aby uzyskać kompletną odpowiedź, podaj wynik polecenia 'dput (yourData)', abyśmy mogli dokładnie odtworzyć obiekt danych. Podana odpowiedź będzie się różnić w zależności od typu kolumny, ponieważ obecnie może to być czynnik lub postać. Jeśli w rzeczywistości jest to już data lub kolumna POSIX, coś takiego jak 'as.numeric()' powinno działać. Na przykład:> 'as.numeric (Sys.time()) [1] 1321895128' – Chase

Odpowiedz

21

Aby przekonwertować ciąg w formacie data R, użyj as.POSIXct - wtedy można zmusić go do wartości numerycznej z wykorzystaniem as.numeric:

> x <- as.POSIXct("9/27/2011 3:33:00 PM", format="%m/%d/%Y %H:%M:%S %p") 
> x 
[1] "2011-09-27 03:33:00 BST" 
> as.numeric(x) 
[1] 1317090780 

wartość masz wskazuje liczbę sekund od dowolnej daty, zazwyczaj 01.01.1970. Zauważ, że różni się to od Excela, gdzie data jest przechowywana jako liczba dni od arbitralnej daty (1/1/1900, jeśli moja pamięć dobrze mi służy - staram się nie używać Excela dłużej.)

Dla więcej informacji można znaleźć ?DateTimeClasses

3

To był dla mnie przydatne:

> test=as.POSIXlt("09/13/2006", format="%m/%d/%Y") 
> test 
[1] "2006-09-13" 
> 1900+test$year 
[1] 2006 
> test$yday 
[1] 255 
> test$yday/365 
[1] 0.6986301 
> 1900+test$year+test$yday/366 
[1] 2006.697 

można stosować podobne podejście, jeśli potrzebujesz numery dzień jak w programie Excel.

Powiązane problemy