as.POSIXct.numeric 执行ldply时出错

as.POSIXct.numeric error when executing ldply

我有一个包含 3 个数据帧的列表 "list.of.df",我使用 plyr 包中的 ldply 将其强制转换为包含所有数据帧列的单个数据帧,即

df <- ldply(list.of.df)

这种方法以前行得通,但今天我有一组新数据,但收到错误消息

Error in as.POSIXct.numeric(what, tz = tzone) : 'origin' must be supplied

3个数据框中有几个POSIXct个变量,所以每次有新数据都要手动排查可能有点麻烦。相反,有没有办法让我传递 ldply 调用中所需的 origin

可以从保管箱load编辑列表linkhere

错误的原因是 "BILLING SUBMISSION" 列在您的前两个列表元素(数据框)中有日期,但在最后一个数据框中有一个数字列。 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)
    

为了将来安全起见,您可能应该将列名更改为正确的 R 列名。希望这有帮助。