R - 基于标准的 NA 数据帧的均值和标准差

时间:2021-01-21 13:50:52

标签: r dataframe mean na standard-deviation

给定以下数据框:

df1 <- data.frame(Company = c('A','B','A','D','D','F'),
                  `X1980` = c(21,NA,53,57,11,26),
                  `X1981` = c(35,33,45,NA,NA,12),
                  `X1982` = c(3,7,10,23,9,53),
                  `X1984` = c(10,50,33,25,4,6))

我首先想计算每家公司的平均值,包括每家公司的所有可用数据。例如 D 公司:(57 + 23 + 25 + 11 + 9 + 4)/6 = 21,5

我还想计算每家公司的标准差,使用与平均值相同的变量。

最理想情况下,这应该产生以下数据框,其中 x 代表结果:

 Company  mean   sd
    A      x     x
    B      x     x
    D      x     x
    F      x     x

目前,我正在通过创建新的数据框来手动进行所有计算,这些数据框构建行总和并对每个公司的观察进行计数。但这似乎很不雅!

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

试试这个。你可以重塑为长期保持公司,然后总结以获得预期的产出:

library(tidyr)
library(dplyr)
#Code
new <- df1 %>% pivot_longer(-1) %>%
  group_by(Company) %>%
  summarise(Mean=mean(value,na.rm = T),
            SD=sd(value,na.rm = T))

输出:

# A tibble: 4 x 3
  Company  Mean    SD
  <chr>   <dbl> <dbl>
1 A        26.2  18.1
2 B        30    21.7
3 D        21.5  19.2
4 F        24.2  20.9