我正在尝试总结 R 中的变量,我的数据如下所示:
id Function V t
1 adverb 0 1
2 discourse 1 1
3 filler 1 0
4 discourse 1 1
5 filler 0 0
6 adverb 1 1
7 adverb 1 1
我需要一个表格,其中按每个变量(存在/不存在)的计数和比例列出每个函数。
在 Excel 中,我会使用以下内容:COUNTIFS($B:$B, "adverb", $C:$C, ">"&0)/SUMIFS($B:$B, "adverb")
理想情况下它看起来像这样:
Function V V_prop t t_prop
adverb 2 0.67 3 1
discourse 2 1 2 1
filler 1 0.5 0 0
我知道我可以像这样使用 dplyr:
df %>%
group_by(Function) %>%
dplyr::summarise_at(vars(V,t), function(x) (sum(x !=0)/n(x)))
但是,这只能给我原始计数,我还需要比例。
最佳答案
你们实际上非常接近。要获得比例,只需除以组中的项目数(使用 n()
而不是 n(x)
)。如果您向 _at
函数提供函数列表,它会将它们全部应用于所选的每个变量:
df %>%
group_by(Function) %>%
summarise_at(vars(V,t),
list('n' = ~ sum(. !=0),
'prop' = ~ (sum(. !=0)/n())))
Function V_n t_n V_prop t_prop
<chr> <int> <int> <dbl> <dbl>
1 adverb 2 3 0.667 1
2 discourse 2 2 1 1
3 filler 1 0 0.5 0
由于 dplyr 的工作方式,新变量必须有一个添加的名称(因此您无法立即获得 V
和 t
,它们必须是 V_n
和 t_n
。如果您确实想要相同的格式,我们可以手动或使用 rename_at
重命名它们:
... %>%
rename_at(vars(ends_with('_n')), ~ gsub('_n$', '', .))
关于r - 有没有办法在 R 中获得类似 COUNTIF 的摘要,同时也显示比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70851691/