类别数不等于特定类别
Number of categories not equal to a specific one
我有一个包含许多分类列的数据框。
我想计算不等于 "bla" 的不同类别的数量。
例如:
> d1
# A tibble: 5 x 2
x y
<chr> <chr>
1 yellow A
2 green A
3 green bla
4 blue B
5 bla bla
如何修改 dplyr 的
d1 %>% summarise_all(n_distinct)
要排除类别"bla"?在这种情况下,x
列的答案应为 3,y
列的答案应为 2。
我们可以使用 filter_all
到 filter
所有列中的行,然后使用 n_distinct
获取唯一值的长度。
library(dplyr)
d1 %>%
filter_all(all_vars(. != "bla")) %>%
summarise_all(n_distinct)
# x y
#1 3 2
使用数据table
library(data.table)
d1 <- data.table(d1)
d1[!y %like% 'bla', .(count = .N, distinct = uniqueN(x)), by = .(y)]
使用base::lengths():
lengths(lapply(d1, function(i) unique(i[ i != "bla" ])))
# x y
# 3 2
我有一个包含许多分类列的数据框。 我想计算不等于 "bla" 的不同类别的数量。 例如:
> d1
# A tibble: 5 x 2
x y
<chr> <chr>
1 yellow A
2 green A
3 green bla
4 blue B
5 bla bla
如何修改 dplyr 的
d1 %>% summarise_all(n_distinct)
要排除类别"bla"?在这种情况下,x
列的答案应为 3,y
列的答案应为 2。
我们可以使用 filter_all
到 filter
所有列中的行,然后使用 n_distinct
获取唯一值的长度。
library(dplyr)
d1 %>%
filter_all(all_vars(. != "bla")) %>%
summarise_all(n_distinct)
# x y
#1 3 2
使用数据table
library(data.table)
d1 <- data.table(d1)
d1[!y %like% 'bla', .(count = .N, distinct = uniqueN(x)), by = .(y)]
使用base::lengths():
lengths(lapply(d1, function(i) unique(i[ i != "bla" ])))
# x y
# 3 2