给定以下数据框:
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
目前,我正在通过创建新的数据框来手动进行所有计算,这些数据框构建行总和并对每个公司的观察进行计数。但这似乎很不雅!
任何帮助将不胜感激!
答案 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