Количество категорий, не равных определенной - PullRequest
0 голосов
/ 21 мая 2018

У меня есть фрейм данных со многими категориальными столбцами.Я хотел бы посчитать количество различных категорий, не равных «бла».Так, например:

> 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)

, чтобы исключить категорию "бла"?В этом случае ответом должно быть 3 для столбца x и 2 для столбца y.

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Использование таблицы данных

library(data.table)

d1 <- data.table(d1)

d1[!y %like% 'bla', .(count = .N, distinct = uniqueN(x)), by = .(y)]
0 голосов
/ 21 мая 2018

Использование base :: lengths () :

lengths(lapply(d1, function(i) unique(i[ i != "bla" ])))
# x y 
# 3 2 
0 голосов
/ 21 мая 2018

Мы можем использовать filter_all - filter строки из всех столбцов, а затем использовать n_distinct, чтобы получить длину уникальных значений.

library(dplyr)

d1 %>% 
   filter_all(all_vars(. != "bla")) %>% 
    summarise_all(n_distinct)

#  x y
#1 3 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...