r - 将数据分散到新列中,同时汇总(添加)值 - R 或 SQL
问题描述
我有一个看起来像这样的表:
ID YEAR SOURCE VALUE
1 2014 AV 15
1 2014 OV 25
1 2015 AV 87
2 2014 AX 44
2 2015 AZ 32
2 2015 NL 2
3 2011 OV 104
我想重新构建表以提供一个新列,其中汇总了源 AV、AX 和 NL 提供的值,以及另一个新列,其中给出了来自 OV 的值。例如,上面看起来像这样:
ID YEAR AV+AX+NL OV
1 2014 15 25
1 2015 87 NA
2 2014 44 NA
2 2015 32 NA
3 2011 NA 104
我想在 R 中执行此操作,但如果更简单,可以使用 SQL。到目前为止,我一直在尝试结合 tidyverse 中的“summarise”和“mutate”命令来创建我的新列,但我无法找到一种方法来仅对某些 SOURCE 值而不是所有值求和。
非常感谢任何帮助
解决方案
一种选择dcast
来自data.table
library(data.table)
dcast(setDT(df1), ID + YEAR ~ SOURCE %in% c("AV", "AX", "NL"),
value.var = "VALUE", sum)
推荐阅读
- docker - Dockerfile 问题
- sql - 限制 SQL 中的 OR 条件是否可以修复 SQL 注入漏洞?
- javascript - 如何在动态表中使用日期选择器选择日期?
- django - 最近 24 小时内是否对 django 框架进行了修改?
- r - 根据不同的数字序列对数据进行分组——计算感兴趣的特定排列
- c# - HP ALM 通过 REST API (C#) 访问测试计划
- amazon-web-services - 不活动后自动“停止” Sagemaker 笔记本实例?
- swift - 核心数据,小写任何 EXC_BAD_ACCESS(代码=1,地址=0x0)
- asp.net - @CurrentIteration 宏接受团队的能力被禁用(本地 TFS)
- javascript - 计算页眉和页脚之间的高度