R 各组取平均值,不包括NA值

R 各组取平均值,不包括NA值,r,aggregate,R,Aggregate,我正在努力通过取平均值并忽略NA值来找到聚合数据帧的方法,但最终结果仍然会显示缺少的值。 例如,数据表如下所示 Guar1 Bucket2 1 2 3 4 Total Month 10 -10 NA NA NA NA 0 201110 10 -0.2 0 9.87 8.42 0 18.29 201110 10 0 0.81 7.49 3.32 5.92 17.54 201110 10 0.4

我正在努力通过取平均值并忽略NA值来找到聚合数据帧的方法,但最终结果仍然会显示缺少的值。 例如,数据表如下所示

Guar1   Bucket2 1   2   3   4   Total   Month
10  -10 NA  NA  NA  NA  0   201110
10  -0.2    0   9.87    8.42    0   18.29   201110
10  0   0.81    7.49    3.32    5.92    17.54   201110
10  0.4 0   0   NA  0   0   201110
10  999 0.73    7.57    4.61    0.77    13.68   201110
20  -10 NA  NA  NA  NA  0   201110
20  -0.2    NA  NA  100 NA  100 201110
20  0   NA  0   0   0   0   201110
20  0.4 1.39    3.13    14.04   2.98    21.54   201110
20  999 1.38    3.11    17.08   2.97    24.54   201110
999 999 1.06    5.44    8.61    1.52    16.63   201110
10  -10 NA  NA  NA  NA  0   201111
10  -0.2    0   0   8.54    0   8.54    201111
10  0   1.87    6.12    16.6    0   24.59   201111
10  0.4 0   0   0   1.47    1.47    201111
10  999 1.68    5.82    13.15   1.67    22.32   201111
20  -10 NA  NA  NA  NA  0   201111
20  -0.2    NA  0   NA  NA  0   201111
20  0   NA  NA  0   0   0   201111
20  0.4 2.29    5.38    14.91   14.18   36.76   201111
20  999 2.29    5.35    13.09   14.1    34.83   201111
最后一张桌子呢

Guar1   Bucket2 1   2   3   4   Total
10  -10 NA  NA  NA  NA  0
10  -0.2    0   4.935   8.48    0   13.415
10  0   1.34    6.805   9.96    2.96    21.065
10  0.4 0   0   0   0.735   0.735
10  999 1.205   6.695   8.88    1.22    18
20  -10 NA  NA  NA  NA  0
20  -0.2    NA  0   100 NA  50
20  0   NA  0   0   0   0
20  0.4 1.84    4.255   14.475  8.58    29.15
20  999 1.835   4.23    15.085  8.535   29.685
999 999 1.06    5.44    8.61    1.52    16.63
我已经试过了

aggregate(.~ Guar1+Bucket2, df, mean, na.rm = FALSE)
但它排除了最终表格中的所有NA

如果我把df中的所有NA值都设为0,那么我就不会得到期望的平均值


我希望有人能在这方面帮助我。谢谢

为了避免删除
NA
行,请使用
NA.action=NA.pass
并从
mean
中选择
NA.rm=TRUE
,确保我们只使用非NA元素来获得
平均值

aggregate(.~ Guar1+Bucket2, df, mean, na.rm =TRUE, na.action = na.pass)
使用dplyr包检查此示例 您可以按多个变量分组。dplyr包非常适合数据编辑、总结、结束等

dataFrame <- data.frame(group = c("a","a","a", "b","b","b"), value = c(1,2,NA,NA,NA,3))
library("dplyr")

   df <-  dataFrame %>%
      group_by(group) %>%
      summarise(Mean = mean(value, na.rm = T))
dataFrame%
总结(平均值=平均值(数值,na.rm=T))
输出
#一个tible:2×2
群平均
1 a 1.5
2B3.0

试试
聚合(.~Guar1+Bucket2,df,mean,na.rm=TRUE,na.action=na.pass)
啊,谢谢你,这是一个好办法
# A tibble: 2 × 2
   group  Mean
  <fctr> <dbl>
1      a   1.5
2      b   3.0