执行ldply时as.POSIXct.numeric错误

时间:2015-07-09 02:33:00

标签: r plyr

我有一个清单" list.of.df"包含3个数据帧,我使用来自ldply包的plyr强制进入包含所有数据帧列的单个数据帧,即

df <- ldply(list.of.df)

这种方法过去常常有效,但今天我有了一组新的数据并收到了错误

  

as.POSIXct.numeric(what,tz = tzone)中的错误:&#39; origin&#39;必须提供

3个数据框中有一些POSIXct变量,因此每次我有一组新数据时手动排除故障可能有点麻烦。相反,我有办法通过origin来电中所需的ldply吗?

列表可以从保管箱链接here load进行编辑。

1 个答案:

答案 0 :(得分:3)

错误的原因是&#34; BILLING SUBMISSION&#34; column在前两个列表元素(数据帧)中有日期,但在最后一个数据框中有一个数字列。 ldply正在尝试使用as.POSIX函数系列将数值隐式转换为POSIX日期值,为此,需要明确指定原点。请参阅以下解决方案:

  1. 确保您尝试合并的每个数据框中的所有数据类型都相同或相似。您可以使用以下代码使用lapply来遍历列表:

    load(list.of.df)
    b <- lapply(list.of.df, function(x){
                      x[, "BILLING SUBMISSION"] <- as.POSIXct(x[, "BILLING SUBMISSION"], origin = "1970-01-01"); return(x)})
    df <- ldply(b)
    
  2. 您可能应该将列名更改为正确的R列名称,以便将来安全。希望这会有所帮助。