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 日期值,为此,需要明确指定来源。请参阅以下解决方案:
确保您尝试合并的每个数据框中的所有数据类型都相同或相似。您可以使用下面的代码使用 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 列名。希望这有帮助。
我有一个包含 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 日期值,为此,需要明确指定来源。请参阅以下解决方案:
确保您尝试合并的每个数据框中的所有数据类型都相同或相似。您可以使用下面的代码使用 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 列名。希望这有帮助。