我试图基于公共字段将数据帧聚合或分组。除了想通过汇总来汇总一些人口统计数字外,我还试图汇总字符串字段。在某些字符串字段(例如,县,州,县代码等)中,它们在具有相同公共字段的字段中始终是相同的,但在某些字符串字段(例如,国会区,参议院等)中,它们是唯一的那些具有相同共同领域的人。
目的是在中合并具有相同值的字段COMMON_FIELD
。对于在其公共字段组中唯一的字符串字段,我需要R从其中一个公共字段组中选择值。只要是共享公共字段值的行,从哪一行获取值都没有关系。
代码样例
IDENTIFICATION | COUNTY | TOTAL_POPULATION | YOUTH_POPULATION | COMMON_FIELD
Oakland-013 | Alameda | 3000 | 1000 | A1-3
Oakland-012 | Alameda | 5000 | 2000 | A1-3
所需结果:
IDENTIFICATION | COUNTY | TOTAL_POPULATION | YOUTH_POPULATION | COMMON_FIELD
Oakland-013 | Alameda | 8000 | 3000 | A1-3
因此,尽管标识字段在具有相同公共字段的组中将是唯一的,但我希望R从公共字段中的组中选择一个,并且选择哪个都没有关系。
使用dplyr
,我们可以按组对列块进行多个聚合。显示“ IDENTIFICATION”值不同,根据预期,我们可以first
为每个组选择该列的元素
library(dplyr) # >= 1.0.0
df1 %>%
group_by(COUNTY, COMMON_FIELD) %>%
# // use across for more than one column
# // checks the type of columns i.e. numeric to select and return the sum
summarise(across(where(is.numeric), sum, na.rm = TRUE),
IDENTIFICATION = first(IDENTIFICATION))
OP的原始数据集代码可以更改为
GAcatalistDupes %>%
group_by(FIPS, CAT_JOIN) %>%
# // summarise numeric columns
summarise(across(where(is.numeric), sum, na.rm = TRUE),
# // get the first value for specified columns
across(c(geography, CONG, SS, SH, Field23, FIPS), first))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句