r - 使用 purrr::map 对列进行分组并获取频率
问题描述
我正在尝试使用 tidyverse 代码获取多列的交叉表。
样本数据:
df <- data.frame(col1=c("a", "b", "c", "c"), col2=c(NA, "d", "d","e")) %>%
mutate_all(as.character)
df
col1 col2
1 a <NA>
2 b d
3 c d
4 c e
使用 apply,我会执行以下操作:
apply(df, 2, function(x) data.frame(table(x)))
我试过下面的代码不起作用:
df %>%
map_df(function(.x) {
group_by(.x) %>% summarise(n=n()) %>% print()
})
解决方案
可以使用purrr::map
如下方式完成:
library(purrr)
map(df, ~as.data.frame(table(.x)))
#> $col1
#> .x Freq
#> 1 a 1
#> 2 b 1
#> 3 c 2
#>
#> $col2
#> .x Freq
#> 1 d 2
#> 2 e 1
推荐阅读
- google-cloud-platform - GCP 部署管理器第三方资源
- python - 为什么 openCV warpAffine 将我的整个图像设置为零?
- ios - 我如何在 Swift iOS 中检测 UIImageView 中的更改图像
- php - PHP 表单 POST 脚本:在此服务器上找不到请求的 URL
- node.js - discord.js 简单的踢用户命令
- api - Youtube API 调度程序 python
- c# - .Net 5.0 400 404 响应正文格式
- checkbox - 更改 CF7 表单的复选框颜色和复选框背景颜色
- java - 将命令提示符附加到 jar
- c++ - C++ - 你可以用不同的参数重载一个函数但只定义一次吗?