如何解决使用purrr :: map对列进行分组并获得频率
样本数据:
df <- data.frame(col1=c("a","b","c","c"),col2=c(NA,"d","e")) %>%
mutate_all(as.character)
df
col1 col2
1 a <NA>
2 b d
3 c d
4 c e
使用套用,我将执行以下操作:
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
,
带有lapply
lapply(df,function(x) as.data.frame(table(x)))
,
在Python38
中,您可以通过几种方式来实现。
- 使用
tidyverse
purrr::map
- 获取长格式的数据,然后为每一列和每个值计数
library(dplyr)
purrr::map(names(df),~df %>% count(.data[[.x]]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。