Можно ли заказать (организовать dplyr?) Объект skim_df? - PullRequest
0 голосов
/ 25 октября 2019

Я использую пакет skimr для суммирования всех логических данных, поэтому, естественно, я хотел бы упорядочить результат по среднему значению от наибольшего к наименьшему.

Я уже пытался передать скимфункция для arrange для dplyr, но это не сработало.

Мы просто используем функцию skim для фрейма данных, которые все логические / логические.

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Я попробовал это, и кажется, что все работает как задуманоskim_df наследуется от data.frame, я не понимаю, почему dplyr функции не будут работать на нем.

set.seed(123)
df <- data.frame(a = sample(c(T,F), 50, replace = TRUE),
              b = c(rep(F,25), sample(c(T,F), 25, replace = TRUE)),
              c = c(rep(T,25), sample(c(T,F), 25, replace = TRUE)))

sdf <- skimr::skim(df) %>%
     dplyr::filter(stat == "mean") %>% dplyr::arrange(desc(value))

sdf

Вывод

variable type    stat  level value formatted
  <chr>    <chr>   <chr> <chr> <dbl> <chr>    
1 c        logical mean  .all   0.8  0.8      
2 a        logical mean  .all   0.5  0.5      
3 b        logical mean  .all   0.26 0.26 

Я не знаю, в чем твоя проблема. Внимательно проверьте ваш код на наличие явных ошибок.

0 голосов
/ 14 ноября 2019

Вот ответ для v2. В версии 2 обезжиренный объект больше не является длинным объектом. Здесь select() превращает снимаемый объект в обычный тиббл (focus ()) сохранил бы его как снимающий объект).

skim(df) %>% dplyr::select(skim_variable, logical.mean) %>% 
             dplyr::arrange(desc(logical.mean)) 
# A tibble: 3 x 2
  skim_variable logical.mean
  <chr>                <dbl>
1 c                     0.7 
2 a                     0.6 
3 b                     0.34

В качестве альтернативы

skim(df) %>% skimr::focus(skim_variable, logical.mean) %>% 
             dplyr::arrange(desc(logical.mean)) %>% as.data.frame()

  skim_type skim_variable logical.mean
1   logical             c         0.70
2   logical             a         0.60
3   logical             b         0.34

оставляет два метаколонны на месте. as.data.frame() - это один из способов удержать сводку от печати, но вы также можете распечатать ее без исключенной сводки.

skim(df) %>% skimr::focus(skim_variable, logical.mean) %>% 
             dplyr::arrange(desc(logical.mean)) %>% 
             print(include_summary = FALSE)

── Variable type: logical ────────────────────────────────────────────────────────────────
  skim_variable  mean
1 c              0.7 
2 a              0.6 
3 b              0.34

...