首页 > 解决方案 > 如何按 A 类求和并分别计算值的百分比?

问题描述

Type  value 
 A   100     
 A   234  
 A   359  
 B   385    
 B   352   
 B   233   

如何按 A 类求和并分别计算值的百分比?预期输出:

Type  value Percentage
 A   100     14.43
 A   234     33.77
 A   359     51.8
 B   385     39.69
 B   352     36.29
 B   233     24.02

我用

d=aggregate(value~ Type, df, sum)
value/d

或者

mutate(Percentage = value / sum(value))

但两者都不起作用

标签: r

解决方案


另一种base R选择是

df$Percentage <- with(df, 100 *value/tapply(value, Type, sum)[Type])

-输出

 df
  Type value Percentage
1    A   100   14.43001
2    A   234   33.76623
3    A   359   51.80375
4    B   385   39.69072
5    B   352   36.28866
6    B   233   24.02062

数据

df <- structure(list(Type = c("A", "A", "A", "B", "B", "B"), value = c(100L,
234L, 359L, 385L, 352L, 233L)), class = "data.frame", row.names = c(NA,
-6L))

推荐阅读