lapply as.POSIXct到多个数据帧的特定列

时间:2018-01-23 17:03:34

标签: r dataframe lapply posixct

似乎我从来没有能够正确使用lapply,而我今天决定结束这一点。我确定我的问题是基本的,但我已经非常仔细地搜索过,以及参考文档,并且无法找到答案。

我有4个包含多列的数据框,其中一个包含当前存储为因子的日期和时间信息(日期时间)(数千个级别的类型" 2016-01-01 00:00:00")

我可以使用以下方法轻松更改单个数据帧的格式:

df$Datetime<-as.POSIXct(strptime(as.character(df$Datetime), "%Y-%m-%d %H:%M:%S", tz="America/Edmonton"))

这是我尝试使用lapply同时对所有数据帧执行相同操作的尝试。

Datasets<-list(Data2017_1h, Data2016_1h, Data2017_15min, Data2016_15min)
Datasets<-lapply(Datasets, function(x){
  as.POSIXct(strptime(as.character(x$Datetime), "%Y-%m-%d %H:%M:%S", tz="America/Edmonton"))
})

输出是一个长度为4的列表,每个元素的类型为&#34; Double(S3:POSIXct,POSIXt)&#34;。我松开了所有其他变量(最初有16列),如果我尝试查看一个列表中的一个元素,它就会显示为Double,而不是POSIXct。

我很困惑,所以我很感激任何见解。对不起,我没有一个可重复的例子,我的学习曲线并不完全。

1 个答案:

答案 0 :(得分:0)

由于没有可复制的数据,因此不确定如何完全回答您的问题。但是您可以尝试:

lapply(Datasets, function(x) as.POSIXct(x$Datetime, format = "%Y-%m-%d %H:%M:%S", tz="America/Edmonton")

这没有指定类类型就可以使用。