13

したがって、3つの列を持つデータファイルがあります。

20010101 000000  0.833
20010101 000500  0.814
20010101 001000  0.794
20010101 001500  0.772
...

人間の目には明らかなように、最初の 2 つは日付と時刻です。それらをPOSIXctに変換する必要があります(または、より良い場合は別のものですが、Rでタイムスタンプを扱った過去の限られた経験はPOSIXctを使用することです)。通常、read.table を使用してそれを取り込み、次のように使用します。

df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")

ただし、2 番目の列は先頭のゼロが失われているようで (おそらく型強制によるものでしょうか?)、正しく動作しません。

Combine date as integer and time as factor to POSIXct in RConverting two columns of date and time data to oneを見てきましたが、どちらも : などの区切り記号で時間を使用しているため、同じ問題はありません。

これらの列を POSIXct に変換するにはどうすればよいですか?

4

3 に答える 3

17

あなたはとても親しかった。次の "単に" は、最初の 2 列を強制的に文字列として読み取り、先行ゼロを保存します。

R> df <- read.table(text="20010101 000000  0.833
20010101 000500  0.814
20010101 001000  0.794
20010101 001500  0.772", 
+ header=FALSE, colClasses=c("character", "character", "numeric"), 
+ col.names=c("Date", "Time", "Val"))
R> df
      Date   Time   Val
1 20010101 000000 0.833
2 20010101 000500 0.814
3 20010101 001000 0.794
4 20010101 001500 0.772

今、あなたが試みていたことは「うまくいく」:

R> df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")
R> df
      Date   Time   Val            DateTime
1 20010101 000000 0.833 2001-01-01 00:00:00
2 20010101 000500 0.814 2001-01-01 00:05:00
3 20010101 001000 0.794 2001-01-01 00:10:00
4 20010101 001500 0.772 2001-01-01 00:15:00
R> 
于 2013-04-30T13:36:26.807 に答える
3

データを文字としてインポートするだけです:

txt <- "Date  Time  value
20010101 000000  0.833
20010101 000500  0.814
20010101 001000  0.794
20010101 001500  0.772
"

df <- read.table(text=txt, header=TRUE, 
                 colClasses=c("character", "character", "numeric"))

df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S")
于 2013-04-30T13:40:10.713 に答える