首页 > 解决方案 > fix.by(by.x, x) 中的错误:“by”必须匹配列数 fix.by(by.x, x) 中的错误:“by”必须匹配列数

问题描述

我有一个数据框 df_forecast,包含按日期划分的消费数据。缺少某些日期。所以我想创建另一个数据框,考虑 df_forecast 的开始日期和结束日期并用连续日期填充它,然后用 df_forecast 左连接并考虑缺失日期的最后一个日期值。所以我写了以下代码

startDate=min(df_forecast$Date1)
endDate=max(df_forecast$Date1)
dateSeq=seq(as.Date(startDate), as.Date(endDate), by="days")
df_date=data.frame(dateSeq)  

但是,当我尝试使用以下代码将 df_date 与 df_forecast 合并时

merge(df_date,df_forecast,by.x=dateSeq,by.y=Date1,all.x=True)

我收到错误消息

Error in fix.by(by.x, x) : 'by' must match numbers of columns Error in fix.by(by.x, x) : 'by' must  match numbers of columns
Error in fix.by(by.x, x) : 'by' must match numbers of columns

merge by 中的两个变量都是 Date 数据类型。你能建议我如何解决这个问题或任何替代方法吗?

标签: r

解决方案


您需要将列称为字符串。对于合并,如果您添加列本身,它会将其解释为列名数组。

要合并的列可以由名称、数字或逻辑向量指定:名称“row.names”或数字 0 指定行名称。如果按名称指定,它必须唯一对应于输入中的命名列。

merge(df_date,df_forecast,by.x='dateSeq',by.y='Date1',all.x=True)

R 在这方面往往非常不一致,因此始终通过尝试耦合的不同方式引用列来进行调试。


推荐阅读