我有一个矢量日期,元素格式相同,如元素1“Mon,05 Sep 2013 01:19:18 -0000”。 我试图将此向量转换为数据框,以便我可以操纵它们。例如,我希望能够从第一个条目中减去4天并获得“星期四,2013年9月1日01:19:18 -0000”。我还想在时间线上绘制每个元素。
我试过了
as.Date(dates,'%a, %d %b %z %H:%M:%S %z')
和
for (d in dates){
as.Date(d,'%a, %d %b %z %H:%M:%S -%z')
}
但我总是得到NA。
答案 0 :(得分:1)
你非常接近。尝试:
dates <- c("Mon, 05 Sep 2013 01:19:18 -0000", "Thu, 01 Sep 2013 01:19:18 -0000")
strptime(dates, '%a, %d %b %Y %H:%M:%S %z')
你刚才有一个拼写错误(应该是%Y
,而不是%z
)。如果您想将时间存储为日期,请按照您的操作添加as.Date
as.Date(dates, '%a, %d %b %Y %H:%M:%S %z')
如果您想创建一个data.frame并从每个日期减去4天,请尝试:
data.frame(date = strptime(dates, '%a, %d %b %Y %H:%M:%S %z'),
subtracted = strptime(dates, '%a, %d %b %Y %H:%M:%S %z') - as.difftime(4, unit="days"))
请注意,R会返回系统特定的时间,这可能与%z
参数指定的向量中的时间不同(请参阅?strptime
)。