-2

我有一个数据框 (d),其中第二列是一个名为event.date的字符 col 。此列中的示例值为“2012-07-23 00:00:00”(日期时间数据)我想将第二列转换为日期时间。我尝试了两件事:

1) d[,2] <- strptime(d[,2], "%Y-%m-%d %H:%M:%S")
结果:警告信息:In [<-.data.frame( *tmp*, , 2, value = list (sec = c(0, 0, 0, : 提供 9 个变量来替换 1 个变量 。head
(d)显示 event.date 的值为 0(不好)

2) d$event.date <- 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”“ 20012-07-230” :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 : 带 37 个级别“AC Power Lost”的因子,..: 4 4 4 4 4 4 4 4 4 15 ...
$ message : chr “The用户已从 10.211.221.118 登录 XX0852-036128。” "用户已成功登录
$ entity.name : chr "XX0852-036633" "XX0902-037744" "

4

1 回答 1

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

于 2013-11-04T22:02:23.553 回答