计算分组变量的总体 sd
Compute population sd for grouped variables
这是我的小标题:
df <- tibble(x = c("a", "a", "a", "b", "b", "b"), y = c(1,2,3,4,6,8))
df
# A tibble: 6 x 2
x y
<chr> <dbl>
1 a 1
2 a 2
3 a 3
4 b 4
5 b 6
6 b 8
我想计算 x 的分组变量的总体 sd。
我试过这个功能:
sqrt((n-1)/n) * sd(x)
和 dplyr 看起来像这样:
df %>%
group_by(x) %>%
summarise(sd = sqrt((length(df$y)-1)/length(df$y)) * sd(y)) %>%
ungroup()
# A tibble: 2 x 2
x sd
* <chr> <dbl>
1 a 0.913
2 b 1.83
当然这是不正确的,因为长度参数没有分组,因此取 n = 6 而不是 n = 3。
我应该得到
a = 0.8164966
b = 1.632993
编辑:
输出应该是我分组的变量和每个组的 sd 的小标题。
您可以使用n()
函数
df %>%
group_by(x) %>%
summarise(sd = sqrt(( n() -1)/ n() ) * sd(y)) %>%
ungroup()
这是我的小标题:
df <- tibble(x = c("a", "a", "a", "b", "b", "b"), y = c(1,2,3,4,6,8))
df
# A tibble: 6 x 2
x y
<chr> <dbl>
1 a 1
2 a 2
3 a 3
4 b 4
5 b 6
6 b 8
我想计算 x 的分组变量的总体 sd。
我试过这个功能:
sqrt((n-1)/n) * sd(x)
和 dplyr 看起来像这样:
df %>%
group_by(x) %>%
summarise(sd = sqrt((length(df$y)-1)/length(df$y)) * sd(y)) %>%
ungroup()
# A tibble: 2 x 2
x sd
* <chr> <dbl>
1 a 0.913
2 b 1.83
当然这是不正确的,因为长度参数没有分组,因此取 n = 6 而不是 n = 3。 我应该得到
a = 0.8164966
b = 1.632993
编辑:
输出应该是我分组的变量和每个组的 sd 的小标题。
您可以使用n()
函数
df %>%
group_by(x) %>%
summarise(sd = sqrt(( n() -1)/ n() ) * sd(y)) %>%
ungroup()