如何让所有行显示?

How to get all the rows to show?

我正在尝试获取按其他两个变量分组的变量的摘要,并且我希望显示所有行。我该怎么做?

我使用的代码是:

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

还有,有没有办法让NA不出现? Table1

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

尝试使用 na.omit 继续管道以删除 NAprint.data.frame 以覆盖 tibbles 的打印方法。

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

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

除了上面推荐的 drop_na() 删除 NA 值之外,您还可以使用 print(n = Inf, width = Inf) 查看 tibble 的所有行和列(请参阅 [=15= 的帮助]).

(如果您的数据是一个“普通”数据框而不是小标题,您可能会自动打印所有行(至少最多 options("max.print") 行,默认为 99999 ... )

mtcars %>% group_by(cyl, am) %>%
    mutate(across(mpg, ~ ifelse(. < 20, NA, .))) %>% ## add some NAs for example
    summarise(across(mpg, list(m = mean, v = var), na.rm = TRUE)) %>%
    drop_na() %>%
    print(n = Inf, width = Inf)