r - 在 R 中合并行和求和
问题描述
我有一个相对较大的数据集(~9000 行/观察),旨在估计贸易流。为此,我有一个数据集,在其第一列中包含国家对和年份的唯一标识符,分别表示进口商和出口商以及年份,即
> head(data)
cp id_IM id_EX iso2_a iso2_t Freq value date_c
1 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 2 20775 2015
2 AD_2015_ES_2015 AD_2015 ES_2015 AE AM 2 20000 2015
3 AE_2008_AT_2008 AE_2008 AT_2008 AE AT 1 25 2008
4 AE_2008_EG_2008 AE_2008 EG_2008 AE EG 1 393 2008
5 AE_2008_GB_2008 AE_2008 GB_2008 AE GB 2 8896 2008
6 AE_2008_GB_2008 AE_2008 GB_2008 AE GB 2 59856 2008 2008
然后,我合并了国家/地区对,这样我每年只有一个国家/地区对并求和
agg <- zephyr %>% ddply(.
(cp, id_a, id_t, iso2_a, iso2_t, date_a, date_c, Freq),
function(x) c(value=sum(x$value)))
虽然我也不确定 R 是否真的做了我想要的。因此,我的问题是:
(1)如何对值列而不是所有其他列求和并删除重复项,以便我每年都有一个国家对,其中包含所有重复项的总和值,即
cp id_IM id_EX iso2_a iso2_t Freq value date_c
1 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 2 20775 2015
2 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 2 20000 2015
变成
cp id_IM id_EX iso2_a iso2_t Freq value date_c
1 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 2 40775 2015
(2) 因为我想要国家 a 和 b 之间的全部贸易流量,所以我还需要将从 a 到 b 的流量与从 b 到 a 的流量相加。换句话说,我怎么能总结
cp id_IM id_EX iso2_a iso2_t Freq value date_c
1 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 1 20775 2015
2 ES_2015_AD_2015 ES_2015 AD_2015 ES AD 1 20000 2015
所以这两个观察结果仍然存在,但它们的价值被增加了:
cp id_IM id_EX iso2_a iso2_t Freq value date_c
1 AD_2015_ES_2015 AD_2015 ES_2015 AD ES 1 40775 2015
2 ES_2015_AD_2015 ES_2015 AD_2015 ES AD 1 40775 2015
非常感谢您的帮助,因为作为一个初学者,我真的很努力。
解决方案
推荐阅读
- javascript - Javascript从函数返回数组
- python - 缩放预处理错误:无法将字符串转换为浮点数:“其他”
- c - STM32F411E-DISCO Uart 循环缓冲区中断
- sharepoint - 自动化 Sharepoint 文件存储库
- jackson - 如何使用 Jackson 处理深深嵌入 XML 的超大集合?
- mysql - 包括重复的订单号但不包括重复的价格
- javascript - 从对象数组中获取对象键的最佳实践是什么?
- python - 如何使用 Robot Framework 4.0 以编程方式编写 FOR 循环和 IF 语句?
- reactjs - 如何模拟非默认导出类的方法?
- c# - Unity Viewbob 使用 lerp 随机回弹 1 帧