将日期向量转换为可行的数据框

时间:2017-04-02 16:23:41

标签: r

我有一个矢量日期,元素格式相同,如元素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。

1 个答案:

答案 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)。