2012-01-24 17 views
4

私はこのようなデータセットを持っている:別の日付フィールドから日時オブジェクトを作成するにはどうすればよいですか?

Year MM DD HH 
158 2010 7 1 5 
159 2010 7 1 5 
160 2010 7 1 6 
161 2010 7 1 6 

structure(list(Year = c(2010L, 2010L, 2010L, 2010L), MM = c(7L, 
7L, 7L, 7L), DD = c(1L, 1L, 1L, 1L), HH = c(5L, 5L, 6L, 6L)), .Names = c("Year", 
"MM", "DD", "HH"), row.names = 158:161, class = "data.frame") 

どのように私は、このデータセット(このデータのための新しい列)から1つのDateTimeオブジェクトを作成することができますか?あなたがデータフレームxであなたのデータを持っていると仮定すると

+0

が重複する可能性をHTTP ://stackoverflow.com/questions/8896901/dates-and-times-in-separate-columns-convert-to-datetime-in-r) –

答えて

6

いくつかのオプションがありますが、ここで一つは(xがあなたのdata.frameです)です:

x$datetime <- ISOdatetime(x$Year, x$MM, x$DD, x$HH, 0, 0) 

あなたが渡すことができます必要な場合は正しいタイムゾーンで?ISOdatetimeを参照してください。

+0

Nice、 'ISOdatetime'は私の不器用な' paste'構造よりはるかに便利です! – James

2

transform(x,datetime = as.POSIXct(paste(paste(Year,MM,DD,sep="-"), paste(HH,"00",sep=":")))) 
    Year MM DD HH   datetime 
158 2010 7 1 5 2010-07-01 05:00:00 
159 2010 7 1 5 2010-07-01 05:00:00 
160 2010 7 1 6 2010-07-01 06:00:00 
161 2010 7 1 6 2010-07-01 06:00:00 
+0

as.POSIXctこれが新しい列になる場合は、はるかに良い選択ですデータフレーム内 – mdsumner

+0

@mdsumnerはい、良い点です。とにかくそれを変換するようですが、私は明示的にそれを入れます – James

1

あなたは今make_dateまたはmake_datetimeを使用してlubridateでこれを行うことができます:CRAN DOCから

:([、別々の列に日付と時刻Rの日時に変換]の

make_datetime(year = 1970L, month = 1L, day = 1L, hour = 0L, min = 0L, 
sec = 0, tz = "UTC") 

make_date(year = 1970L, month = 1L, day = 1L) 
関連する問題