我有一个数据框(d),其中第二列是名为 event.date 的字符col。此列中的示例值为“2012-07-23 00:00:00”(日期时间数据) 我想将第二列转换为日期时间。我尝试了两件事:
1) d [,2]< - strptime(d [,2],“%Y-%m-%d%H:%M:%S” )
结果:警告消息:
在[<-.data.frame
(*tmp*
,2,value = list(sec = c(0,0,0,:
提供了9个变量来替换1个变量。
head(d)显示event.date的值为0(不好)
2) d $ event.date&lt; - strptime(d $ event.date,“%Y-%m-%d%H:%M:%S” )
工作正常......我需要能够使用位置列表示法转换日期时间列。
对我做错了什么的想法?谢谢
str(d)看起来像:
'data.frame':826 obs。 6个变量:
$ event.id:int 229162 129163 392564 392665 398466 355167 326168 397269 399170 399171 ...
$ event.date:chr“2012-07-23 00:00:00”“2012-07-23 00:00:00”“2012-07-23 00:00:00”“2012-07 -23 00:00:00“......
$严重性:因子w / 6级“清除”,“严重”,..:3 3 3 3 3 3 3 3 3 3 ...
$ message.type:因子w / 37级“AC Power Lost”,..:4 4 4 4 4 4 4 4 4 15 ...
$ message:chr“用户已从10.211.221.118登录到XX0852-036128。” “用户已成功登录
$ entity.name:chr“XX0852-036633”“XX0902-037744”“XX0902-037A55”“XX0902-037D70”......
答案 0 :(得分:0)
> d <- data.frame(foo = rbinom(2, 10, .3), event.date = c("1990-01-10 04:30:13", "1987-03-08 02:12:14"), tt = rpois(2, 42), stringsAsFactors = FALSE)
> d
foo event.date tt
1 4 1990-01-10 04:30:13 37
2 3 1987-03-08 02:12:14 41
> d[[2]] <- strptime(d[[2]], "%Y-%m-%d %H:%M:%S")
> d
foo event.date tt
1 4 1990-01-10 04:30:13 37
2 3 1987-03-08 02:12:14 41
> sapply(d, class)
$foo
[1] "integer"
$event.date
[1] "POSIXlt" "POSIXt"
$tt
[1] "integer"
我真的不知道d[,2]
,d[2]
和d[[2]]
之间的区别在于此示例。我只是从经验中知道这可以解决这个问题。您可以浏览[.data.frame
,[[.data.frame
,[<-.data.frame
和[[<-.data.frame
的源代码。