如何使用dplyr计算R语言数据集各因子分组内的数值占比
解决代码
首先确认你要的占比是按国家(country)分组,计算当前行value占所属国家所有value总和的比例,实现代码如下:
# 加载dplyr包 library(dplyr) # 构造示例数据集 data <- data.frame( team = c("a", "a", "a", "b", "b", "b", "c", "c", "c"), country = c("usa","uk", "spain","usa","uk","spain","usa","uk","spain"), value = c(40, 20, 10, 50, 30, 35, 50, 60, 25) ) # 计算得到目标结果 desired_result <- data %>% group_by(country) %>% mutate(prop = value / sum(value)) %>% ungroup()
逻辑验证
你给出的desired数据集的prop列数值和按上述逻辑计算的结果完全匹配:
- usa分组总value = 40 + 50 + 50 = 140,对应a队usa占比40/140≈0.2857,与预期一致
- uk分组总value = 20 + 30 + 60 = 110,对应a队uk占比20/110≈0.1818,与预期一致
- spain分组总value = 10 +35 +25 =70,对应a队spain占比10/70≈0.1429,与预期一致
内容的提问来源于stack exchange,提问作者michael_2021
相关产品推荐
相关产品推荐

