如何计算 10 个区间内值的标准差?

how to calculate standard deviation of values in 10 intervals?

我想在 R 中以 10 为步长计算标准偏差;例如

对于大量的值,我想计算 10 个区间内的值的 SD。 0-10、10-20、20-30 ...

示例:我有一个向量:

exemple <- seq (0,100,10)

如果我做 sd(示例):我有标准偏差的值,但对于示例中的所有值。

但是,我该如何计算此示例的标准偏差,选择 10 步 10 步?

但是我不想计算所有这些值的标准差,而是想计算它在 0 到 10 之间、10 到 20 之间、20 到 30 之间等等……

我在 0-10 区间内精确:我们有值,在 10-20 区间内,我们也有值..等等

exemple2 0 to 10, we have values : 0.2, 0.3, 0.5, 0.7, 0.6, 0.7, 0.03, 0.09, 0.1, 0.05

更多插图的图像:

有人可以帮我吗?

您可以使用cut/findInterval将数据分组,每组取sd

set.seed(123)
vec <- runif(100, max = 100)
tapply(vec, cut(vec, seq(0,100,10)), sd)

#  (0,10]  (10,20]  (20,30]  (30,40]  (40,50]  (50,60]  (60,70]  (70,80]  (80,90] (90,100] 
#3.438162 2.653866 2.876299 2.593230 2.353325 2.755474 2.454519 3.282779 3.658064 3.021508 

这是一个使用 dplyr 的解决方案:

library(dplyr)
## Create a random a dataframe with a random variable with 1000 values between 1 and 100

df <- data.frame(x = runif(1000, 1, 100)

## Create a grouping variables, binning by 10

df$group <- findInterval(df$x, seq(10, 100, by=10))

## Calculate SD by group

df %>%
  group_by(group) %>%
  summarise(Std.dev = sd(x))

# A tibble: 10 x 2
   group St.dev
 * <int>  <dbl>
 1     0   2.58
 2     1   2.88
 3     2   2.90
 4     3   2.71
 5     4   2.84
 6     5   2.90
 7     6   2.88
 8     7   2.68
 9     8   2.98
10     9   2.89