R 获取计数位于列中的组的标准偏差

R 获取计数位于列中的组的标准偏差,r,dplyr,R,Dplyr,我希望得到的标准偏差按年份分组。我看到的所有示例都不涉及聚合计数列 我想使用count列的总和作为标准偏差计算的一部分 year count age 2018 2 0 2018 3 1 2018 4 2 2017 1 0 2017 4 1 2017 2 2 上述问题的预期答案是:- 2018年=0.78567420131839 2017年=0.63887656499994以下应该可以做到这一点 library(dplyr) libr

我希望得到的标准偏差按年份分组。我看到的所有示例都不涉及聚合计数列

我想使用count列的总和作为标准偏差计算的一部分

year  count age
2018  2     0
2018  3     1
2018  4     2
2017  1     0
2017  4     1
2017  2     2
上述问题的预期答案是:-

2018年=0.78567420131839


2017年=0.63887656499994

以下应该可以做到这一点

library(dplyr)
library(purrr)

data <- tibble(year = c(2018, 2018, 2018, 2017, 2017, 2017),
               count = c(2, 3, 4, 1, 4, 2),
               age = c(0, 1, 2, 0, 1, 2))

data %>%
  mutate(vec = map2(age, count, ~ rep(.x, .y))) %>%
  group_by(year) %>%
  mutate(concs = list(unlist(vec))) %>%
  ungroup() %>%
  mutate(age_sd = map_dbl(concs, sd)) %>%
  select(-vec, -concs)

#    year count   age age_sd
#   <dbl> <dbl> <dbl>  <dbl>
# 1  2018     2     0  0.833
# 2  2018     3     1  0.833
# 3  2018     4     2  0.833
# 4  2017     1     0  0.690
# 5  2017     4     1  0.690
# 6  2017     2     2  0.690
库(dplyr)
图书馆(purrr)
数据%
变异(vec=map2(年龄、计数、~rep(.x、.y)))%>%
组别(年份)%>%
突变(concs=list(unlist(vec)))%>%
解组()%>%
突变(年龄sd=map dbl(浓度sd))%>%
选择(-vec,-concs)
#年数年龄
#       
# 1  2018     2     0  0.833
# 2  2018     3     1  0.833
# 3  2018     4     2  0.833
# 4  2017     1     0  0.690
# 5  2017     4     1  0.690
# 6  2017     2     2  0.690

您如何获得2018年的
0.78567
?你能解释一下计算结果吗?@RonakShah OP使用的是最大似然估计,而不是R标准皮尔逊矩估计。为了得到2018年的答案,我只是将这些值扩展到0,0,1,1,2,2,2,2,然后将这些值插入我看到,当我从一个总体到另一个样本时,我得到了与@rjenHi相同的答案,看起来就是这样,当我以样本模式而不是总体模式将值插入在线计算器时,我得到了相同的答案。