【发布时间】:2014-12-22 16:16:49
【问题描述】:
我有一个如下所示的 csv 文件(注意它使用 ; 作为列分隔符,, 作为十进制标记):
Values;Date.Col
911;20/12/2013 04:05:01 p.m.
124,82;23/12/2013 09:43:03 a.m.
287;23/12/2013 09:44:15 a.m.
37,3;23/12/2013 09:45:26 a.m.
448,4;23/12/2013 09:46:50 a.m.
432,5;23/12/2013 09:48:31 a.m.
无论如何,我有兴趣绘制Values 随时间变化的行为,所以我执行了这些命令(文件名是“tmp2.csv”):
df <- read.table("tmp2.csv", header = T, dec = ',', sep = ';')
df$Date.Col <- strptime(df$Date.Col, "%d/%m/%Y %I:%M:%S %p")
str(df)
plot(Values ~ Date.Col, df, type = 'l')
在最后一个命令之前一切似乎都很顺利,它给出了以下错误消息:
Error in (function (formula, data = NULL, subset = NULL, na.action = na.fail, :
invalid type (list) for variable 'Date.Col'
过去我根据日期类向量绘制数值变量,因此我假设 R 可以处理这种情况,但问题可能在于小时、分钟和秒的存在。
在列表中寻找类似的错误并没有产生任何有用的见解,有谁知道这里到底是什么问题,或者我能做些什么来解决它?
提前致谢。
【问题讨论】:
-
strptime返回POSIXlt这通常不是您想要的。也许您打算使用as.POSIXct()? -
您在读取数据时需要一个 stringsAsFactors=FALSE 但是当您应用 strptime 函数时这仍然会返回一个 NA 字符串。
-
这是时区错误吗?
-
@joran 的建议效果很好!当然,我不必删除
p.m.中的点。stringsAsFactors或时区似乎都不是问题。谢谢大家,我将使用实际使用的代码发布@joran 的答案。