groupwise summarize 正在返回 NA;还有来自网络的小例子

groupwise summarise is returning NA; also in minor example from the web

我尝试按如下方式生成年度汇总统计数据:

data %>%
  group_by(year) %>%
    summarise(mean.abc = mean(abc), mean.def = mean(def), sd.abc = sd(abc), sd.def = sd(def))

这段代码returns一个行向量,在各自的列中用NA填充

  mean.abc mean.def sd.abc sd.def
1       NA       NA     NA     NA

所以,我尝试解决这个问题并复制了一些示例

data(mtcars)

mtcars %>%
  group_by(cyl) %>%
  summarise(mean = mean(disp))

还有这个脚本returns

      mean
1 230.7219

那么,我做错了什么?我正在加载以下包:

loadpackage( c("foreign","haven", "tidyverse", "plyr", "stringr", "eeptools", "factoextra") )

感谢您的支持!

您的问题是 plyr 包中的 summarise 函数没有按照您的预期执行。

查看两者的区别:

library(tidyverse)

mtcars %>%
  group_by(cyl) %>%
  plyr::summarise(mean = mean(disp))
#>       mean
#> 1 230.7219

mtcars %>%
  group_by(cyl) %>%
  dplyr::summarise(mean = mean(disp))
#> # A tibble: 3 x 2
#>     cyl  mean
#>   <dbl> <dbl>
#> 1     4  105.
#> 2     6  183.
#> 3     8  353.

由于您的数据似乎有缺失值,这应该可以解决问题:

   data %>% 
    group_by(year) %>% 
    dplyr::summarise(across(all_of(c('abc', 'def')),
                            .fns = list(mean = ~mean(.,na.rm=T),
                                        sd = ~sd(.,na.rm=T))))