Как сделать так, чтобы отображались все строки?

avatar
Nora17.06
8 августа 2021 в 16:15
58
4
2

Я пытаюсь получить сводку по переменной, сгруппированной по двум другим переменным, и хочу, чтобы отображались все строки. Как мне это сделать?

Я использую следующий код:

usl %>%    group_by(ethnicity_fct, harassment_fct) %>%   
summarise(mean_menthealth = mean(menthealth, na.rm = T),
           menthealth_var = var(menthealth, na.rm = T))

Кроме того, есть ли способ, чтобы NA не появлялась? Таблица 1

Источник

Ответы (4)

avatar
Rui Barradas
8 августа 2021 в 16:23
1

Попробуйте продолжить конвейер с помощью na.omit, чтобы удалить NA, и print.data.frame, чтобы переопределить метод печати для тибблов.

usl %>% 
  group_by(ethnicity_fct, harassment_fct) %>%   
  summarise(mean_menthealth = mean(menthealth, na.rm = T),
            menthealth_var = var(menthealth, na.rm = T)) %>%
  na.omit() %>%
  print.data.frame()
avatar
Ben Bolker
8 августа 2021 в 16:54
2
avatar
TarJae
8 августа 2021 в 16:32
2

Пример с набором данных mtcars. Если вы хотите увидеть все столбцы после summarise -> насколько мне известно, это невозможно?!.

Вы можете использовать mutate, чтобы добавить дополнительный столбец. И используйте drop_na для удаления любой строки NA.

mtcars %>% 
    group_by(cyl, am) %>%
    mutate(mean_mpg = mean(mpg, na.rm = T),
           mpg_var = var(mpg, na.rm = T)) %>% 
    drop_na()

Вывод:

# A tibble: 32 x 13
# Groups:   cyl, am [6]
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb mean_mpg mpg_var
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>    <dbl>   <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4     20.6   0.563
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4     20.6   0.563
 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1     28.1  20.1  
 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1     19.1   2.66 
 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2     15.0   7.70 
 6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1     19.1   2.66 
 7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4     15.0   7.70 
 8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2     22.9   2.11 
 9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2     22.9   2.11 
10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4     19.1   2.66 
# ... with 22 more rows
avatar
Tschösi
8 августа 2021 в 16:22
0

для удаления NA используйте drop_na()

us1 <- usl %>%    group_by(ethnicity_fct, harassment_fct) %>%   
summarise(mean_menthealth = mean(menthealth, na.rm = T),
           menthealth_var = var(menthealth, na.rm = T)) %>% drop_na()

чтобы увидеть все строки, используйте print()

print(us1)
Ben Bolker
8 августа 2021 в 16:47
0

где функция filter_na? Я не могу найти это. Вы имеете в виду drop_na()?

Tschösi
8 августа 2021 в 17:56
0

ты прав! должно быть drop_na, я опечатался по памяти

Ben Bolker
8 августа 2021 в 17:58
0

Я не думаю, что print() автоматически покажет все строки tibble.