有没有办法在 R 中获得类似 COUNTIF 的摘要,它也显示比例?
Is there a way to get a COUNTIF like summary in R that also shows proportions?
我试图在 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
我需要的是一个 table,它按每个变量的计数和比例列出每个函数 (present/non-present)。
我 Excel 我会使用类似的东西:COUNTIFS($B:$B, "adverb", $C:$C, ">"&0)/SUMIFS($B:$B, "副词")
理想情况下它看起来像这样:
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 中的变量之间进行汇总,我的数据如下所示:
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
我需要的是一个 table,它按每个变量的计数和比例列出每个函数 (present/non-present)。
我 Excel 我会使用类似的东西:COUNTIFS($B:$B, "adverb", $C:$C, ">"&0)/SUMIFS($B:$B, "副词")
理想情况下它看起来像这样:
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$', '', .))