我正在尝试使用dplyr根据其他列中的变量对一列进行乘法和求和。
location = c("LBJ", "LBJ", "LBJ","LBJ")
sample = c("100", "100", "100","100")
sum = c(0,1,2,3)
n = c(200,100,20,24)
df = data.frame(location, sample, sum,n)
df
location sample sum n
1 LBJ 100 0 200
2 LBJ 100 1 100
3 LBJ 100 2 20
4 LBJ 100 3 24
我想计算((n其中sum == 0)+((n其中sum == 1)/ 2))/(所有n的总和)。
我将有多个位置和样本应该独立行动,所以我想在dplyr中使用group_by命令。
感谢您的帮助。
答案 0 :(得分:1)
library(dplyr)
df%>%group_by(location)%>%dplyr::mutate(Rate=mean(n[which(sum<=1)])/sum(n))
# A tibble: 4 x 5
# Groups: location [1]
location sample sum n Rate
<fctr> <fctr> <dbl> <dbl> <dbl>
1 LBJ 100 0 200 0.4360465
2 LBJ 100 1 100 0.4360465
3 LBJ 100 2 20 0.4360465
4 LBJ 100 3 24 0.4360465