r - pivot_wider,计数出现次数
问题描述
简单的问题。我想在数据集上使用 pivot_wider 来计算每个类别的出现次数:
这是数据 mtcars 的示例(我将它们按 cyl 分组,然后计算不同碳水化合物的出现次数)
mtcars %>%
dplyr::group_by(cyl,carb) %>%
dplyr::summarize(sum=n()) %>%
pivot_wider(id_cols="cyl",names_from="carb",values_from="sum")
# A tibble: 3 x 7
# Groups: cyl [3]
cyl `1` `2` `4` `6` `3` `8`
<dbl> <int> <int> <int> <int> <int> <int>
1 4 5 6 NA NA NA NA
2 6 2 NA 4 1 NA NA
3 8 NA 4 6 NA 3 1
有没有办法让我直接使用“pivot_wider”来做到这一点?我可以用“dcast”做到这一点
mtcars %>%
dcast(cyl~carb,fun.aggregate=length)
Using carb as value column: use value.var to override.
cyl 1 2 3 4 6 8
1 4 5 6 0 0 0 0
2 6 2 0 0 4 1 0
3 8 0 4 3 6 0 1
...但我喜欢在很多其他事情上使用“pivot_wider”(它的语法对我来说很有意义)。
谢谢!
解决方案
您可以使用values_fn
参数 to pivot_wider
,其作用与fun.aggregate
dcast 中的相同。
mtcars %>%
pivot_wider(id_cols = "cyl",
names_from = "carb",
values_from = "am",
values_fn = list(am = length))
请注意,您必须选择一列(任意,我选择了am
),并values_fn
作为命名列表给出(说您要获取该列的长度)。这是一个命名列表,因为在其他用例中,您可能会聚合多个列。
推荐阅读
- c# - 如何从 c# asp.net web 表单后面的代码中获取图表的值
- android - 如何从“2019-06-27T12:30:00.000+0000”获取日期?
- emulation - 在 OS X Mojave 上运行 mame64 时找不到 AudioToolbox 符号
- git - Gitignore:忽略所有 .vscode 目录,但包括顶级 launch.json
- angular - Angular2-multiselect-dropdown onClose 事件触发不正确
- c++ - 类根据成员名称自动创建函数
- c++ - Herb Sutter 在 GotW #35 中关于 typename 的代码玩笑过时了吗?
- ide - CheckStyle 评论
- solr - Magnolia Solr 配置
- mysql - select * in table_a left join table_b when certain_field is null in table_b