我使用带有两个因子的"GROUP_BY"对我的数据集进行了分组,并计算了每个结果组属于每个感兴趣类别的观测数量,如下所示.
df1 <- data.frame(x = c(a,a,b,a,b,c,a,c,a,b), y = c(0,1,0,1,1,0,1,0,0,0,0), var = c(inf, med, inf, sup, med, med, sup, inf, med, sup))
df1 %>%
group_by(x,y) %>%
count(var) -> conta_var
# A tibble: 9 × 4
# Groups: x, y [5]
x y var n
<chr> <dbl> <chr> <int>
1 a 0 inf 1
2 a 0 med 1
3 a 1 med 1
4 a 1 sup 2
5 b 0 inf 1
6 b 0 sup 1
7 b 1 med 1
8 c 0 inf 1
9 c 0 med 1
现在我想添加一个名为like n_perc的新列,它取每个n并将其除以x-y每个组合的观测总数
我可以手动完成此操作,方法是首先对每个组进行过滤,计算每个n:
df1 %>%
filter(x == "a", y = 1) %>%
nrow() -> n_f
然后使用带有嵌套ifelse函数的mutate添加列,但我相信有一种更快的方法来完成它.
最终结果如下所示:
# A tibble: 9 × 4
# Groups: x, y [5]
x y var n n_perc
<chr> <dbl> <chr> <int> <dbl>
1 a 0 inf 1 0.5
2 a 0 med 1 0.5
3 a 1 med 1 0.33
4 a 1 sup 2 0.66
5 b 0 inf 1 ...
6 b 0 sup 1
7 b 1 med 1
8 c 0 inf 1
9 c 0 med 1