获取df的每一列的摘要(dplyr::count)
我有以下数据帧获取df的每一列的摘要(dplyr::count),r,dplyr,count,R,Dplyr,Count,我有以下数据帧 tbl <- structure(list(col1 = c("a", NA, "b", NA, "c", "c"), col2 = c("n", "n", "b", "a", NA, "c"), col3 = c("z", "a", "z", "b", "1", "c" )), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame" )) tbl我们可以使用map循环名称,并应用count lib
tbl <- structure(list(col1 = c("a", NA, "b", NA, "c", "c"), col2 = c("n",
"n", "b", "a", NA, "c"), col3 = c("z", "a", "z", "b", "1", "c"
)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
tbl我们可以使用map
循环名称
,并应用count
library(dplyr)
library(purrr)
map(names(tbl), ~ tbl %>%
select(.x) %>%
count(!! rlang::sym(.x)))
或者可以将表格
与汇总
一起应用,并返回一个列表
列
tbl %>%
summarise_all( ~ list(table(.)))
或表示不同元素的数量
tbl %>%
summarise_all(n_distinct)
或在base R
lapply(tbl, function(x) as.data.frame(table(x)))
使用dplyr
和purrr
的一种解决方案可能是,对于不同值的数量:
map(tbl, n_distinct)
$col1
[1] 4
$col2
[1] 5
$col3
[1] 5
对于计数:
map(tbl, table)
$col1
a b c
1 1 2
$col2
a b c n
1 1 1 2
$col3
1 a b c z
1 1 1 1 2
谢谢!rlang::sym(.x)做什么?@user171558抱歉,忘了回复。这里,名称
是字符串,sym
将这些字符串转换为可以计算的符号(!!
)以返回存储在该列中的值为什么映射第一列。您可以只使用summary()
。@j3ypi,因为另一个用户正使用这种方法。我只是增加了一种可能性:)
map(tbl, table)
$col1
a b c
1 1 2
$col2
a b c n
1 1 1 2
$col3
1 a b c z
1 1 1 1 2