我有一个清单" 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
进行编辑。
答案 0 :(得分:3)
错误的原因是&#34; BILLING SUBMISSION&#34; column在前两个列表元素(数据帧)中有日期,但在最后一个数据框中有一个数字列。 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列名称,以便将来安全。希望这会有所帮助。