1

2012-09-27 07:05:59timeの形式の列を持つ data.frame から時刻と日付を分離する必要があります。次に、列を使用して特定の日付/時刻のデータを抽出する必要があります。どうすればこれを行うことができますか?これの逆をやりたいのかもしれません。datetime

strptime関数とパッケージを使用してみlubridateましたが、動作しませんでした。

data1 <- structure(list(event.date = structure(list(sec = c(59, 29, 59, 
0, 29, 59, 29, 29, 59, 59), min = c(5L, 7L, 15L, 17L, 17L, 19L, 
21L, 22L, 22L, 23L), hour = c(7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
7L, 7L), mday = c(27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 
27L), mon = c(8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), year = c(112L, 
112L, 112L, 112L, 112L, 112L, 112L, 112L, 112L, 112L), wday = c(4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), yday = c(270L, 270L, 270L, 
270L, 270L, 270L, 270L, 270L, 270L, 270L), isdst = c(0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("sec", "min", "hour", 
"mday", "mon", "year", "wday", "yday", "isdst"), class = c("POSIXlt", 
"POSIXt"), tzone = c("CST", "GMT", "   ")), VE = c(45L, 55L, 
45L, 50L, 55L, 35L, 30L, 45L, 55L, 30L)), .Names = c("event.date", 
"VE"), row.names = c(NA, 10L), class = "data.frame")

以下は私にNAsを与えます:

as.Date(as.character(data1$event.date),"%HH:%MM:%SS")

私もlubridateうまく使えません…。

ymd_hms(as.character(data1$event.date))

どの日付形式/パッケージを使用すればよいか混乱しています。

4

2 に答える 2

6

どうぞ:

R> data1$pt <- as.POSIXct(data1[,1])              # parse time from ISO string
R> data1$date <- as.Date(data1[,"pt"])            # transform to Date
R> data1$time <- format(data1[,"pt"], "%H:%M:%S") # transform to time string
R> data1
            event.date VE                  pt       date     time
1  2012-09-27 07:05:59 45 2012-09-27 07:05:59 2012-09-27 07:05:59
2  2012-09-27 07:07:29 55 2012-09-27 07:07:29 2012-09-27 07:07:29
3  2012-09-27 07:15:59 45 2012-09-27 07:15:59 2012-09-27 07:15:59
4  2012-09-27 07:17:00 50 2012-09-27 07:17:00 2012-09-27 07:17:00
5  2012-09-27 07:17:29 55 2012-09-27 07:17:29 2012-09-27 07:17:29
6  2012-09-27 07:19:59 35 2012-09-27 07:19:59 2012-09-27 07:19:59
7  2012-09-27 07:21:29 30 2012-09-27 07:21:29 2012-09-27 07:21:29
8  2012-09-27 07:22:29 45 2012-09-27 07:22:29 2012-09-27 07:22:29
9  2012-09-27 07:22:59 55 2012-09-27 07:22:59 2012-09-27 07:22:59
10 2012-09-27 07:23:59 30 2012-09-27 07:23:59 2012-09-27 07:23:59
R> 

そして、ここにあなたの列の種類があり、最初のコマンドで変更POSIXltしたことを示しています:POSIXct

R> sapply(data1, class)
$event.date
[1] "POSIXlt" "POSIXt" 

$VE
[1] "integer"

$pt
[1] "POSIXct" "POSIXt" 

$date
[1] "Date"

$time
[1] "character"

R> 
于 2013-05-10T18:40:12.650 に答える