【发布时间】:2020-02-07 09:01:59
【问题描述】:
我有两个行数不同的数据框,因此:
df1:
Data1
2019-03-01 0.011
2019-04-01 0.021
2019-05-01 0.013
2019-06-01 0.032
2019-07-01 NA
df2:
Data2
2019-01-01 0.012
2019-02-01 0.024
2019-03-01 0.033
2019-04-01 0.017
2019-05-01 0.055
2019-06-01 0.032
2019-07-01 0.029
行名是日期。我想向 df1 添加第二列“结果”。此列将 df1$Data1 中的值与具有相同行名的 df2$Data2 行中的值相加。 (两个数据框中的行名都是唯一且有序的。)因此,例如:
df1$Result[1] <- df1$Data1[1] + df2$Data2[3]
结果是:
df1:
Data1 Result
2019-03-01 0.011 0.044
2019-04-01 0.021 0.038
2019-05-01 0.013 0.068
2019-06-01 0.032 0.064
2019-07-01 NA NA
我能弄清楚如何做到这一点的唯一方法是使用循环结构,但我必须认为有更好的方法。不过,我没有找到它,所以我想我正在寻找错误的东西。有什么想法吗?
我也愿意接受其他达到相同目的的建议。因此,例如,如果使用数据列中的日期而不是行名称中的日期更容易完成,那很好。或者如果使用 ts 对象会更容易,尽管我通常发现数据框更容易使用。
【问题讨论】:
-
您已经得到了有效的答案。但是,我建议您将这些日期用作日期列,而不是行名,因为这样可以更容易地在以后使用它们,以备不时之需
-
不过,有效的答案一次只能工作一行。有没有办法让它一次工作数千行,只使用行名(或日期列中的值)来匹配行?
-
我指的是@Ronak 的答案,它已经有效
-
啊!我的错。谢谢。
标签: r function dataframe operators rowname