r - 根据 R 中的列名聚合列
问题描述
我在 R 中有这个数据框
Party Pro2005 Anti2005 Pro2006 Anti2006 Pro2007 Anti2007
R 1 18 0 7 2 13
R 1 19 0 7 1 14
D 13 7 3 4 10 5
D 12 8 3 4 9 6
我想将它聚合到它将基于政党的所有优点和反面结合起来的地方
例如
Party ProSum AntiSum
R. 234. 245
D. 234. 245
我将如何在 R 中做到这一点?
解决方案
我会建议一种tidyverse
重塑数据和计算值总和的方法:
library(tidyverse)
#Data
df <- structure(list(Party = c("R", "R", "D", "D"), Pro2005 = c(1L,
1L, 13L, 12L), Anti2005 = c(18L, 19L, 7L, 8L), Pro2006 = c(0L,
0L, 3L, 3L), Anti2006 = c(7L, 7L, 4L, 4L), Pro2007 = c(2L, 1L,
10L, 9L), Anti2007 = c(13L, 14L, 5L, 6L)), class = "data.frame", row.names = c(NA,
-4L))
编码:
df %>% pivot_longer(cols = -1) %>%
#Format strings
mutate(name=gsub('\\d+','',name)) %>%
#Aggregate
group_by(Party,name) %>% summarise(value=sum(value,na.rm=T)) %>%
pivot_wider(names_from = name,values_from=value)
输出:
# A tibble: 2 x 3
# Groups: Party [2]
Party Anti Pro
<chr> <int> <int>
1 D 34 50
2 R 78 5
推荐阅读
- php - PHP8将0与空字符串进行比较,其背后的逻辑是什么
- jenkins - 构建触发器不会保存在 Jenkins 中
- python - 遍历 pandas df 返回所有与正则表达式不匹配的值
- powershell - 如何使用 PowerShell 解析文件夹和文件?
- python - 如何计算已登录的客户端扭曲?
- reactjs - AsyncStorage 不存储数据,随后不检索数据
- javascript - 使用更高分辨率的javascript将画布图表下载为PNG图像
- json - 循环 JSON 数组对象的内容
- excel - 多个类属性的错误处理
- c++ - C++ 为具有相同名称的类型起别名