2014-10-13 10 views
5

W tej chwili mam 3 oddzielne kolumny jako rok, miesiąc i dzień w pliku danych w R. Jak scalić te trzy kolumny w jedną kolumnę i sprawić, że R zrozumie że to jest data?Łączenie trzech różnych kolumn w datę w R

Oto, jak wygląda teraz.

year mon day gnp 

1947 1 1 238.1 
1947 4 1 241.5 
1947 7 1 245.6 
1947 10 1 255.6 
1948 1 1 261.7 
1948 4 1 268.7 

Odpowiedz

9

Spróbuj:

df$date <- as.Date(with(df, paste(year, mon, day,sep="-")), "%Y-%m-%d") 
    df$date 
    #[1] "1947-01-01" "1947-04-01" "1947-07-01" "1947-10-01" "1948-01-01" 
    #[6] "1948-04-01" 
+0

Dzięki! Pracuje bardzo dobrze. – viethaihp291

+0

@Hai Nguyen Cieszę się, że to działa. – akrun

1

Albo można użyć pakietu lubridate, co sprawia, że ​​praca z datami i czasem w R znacznie łatwiejsze w ogóle.

np.

df$date <- with(df, ymd(sprintf('%04d%02d%02d', year, mon, day))) 
df$date 
# [1] "1947-01-01 UTC" "1947-04-01 UTC" "1947-07-01 UTC" "1947-10-01 UTC" 
# [5] "1948-01-01 UTC" "1948-04-01 UTC" 

Funkcja ymd pobiera ciąg reprezentujący rok, miesiąc i dzień, który może być „19470101”, „1947-01-01”, „1947/01/01” itd Albo istnieje również mdy i dmy, jeśli elementy są uporządkowane inaczej. Możesz również opcjonalnie określić strefę czasową.

+1

FWIW, zwraca wartość "POSIXct", a nie "Date" – GSee

+0

Dziękuję za odpowiedź! – viethaihp291

Powiązane problemy