找出 R 数据框列中每 n 个观测值的标准差。
要找到R数据框中每n个观测值的标准偏差,我们可以使用zoo包的rollapply函数。
例如,如果我们有一个名为df的数据框,其中包含一列X包含100个值,那么我们可以使用以下命令创建一个每10个值的标准差的列-
df$SD_10<-rep(rollapply(df[,1],width=10,by=10,sd),each=10)
示例1
以下代码段创建了一个示例数据框-
x<-rpois(20,5) df1<-data.frame(x) df1
创建以下数据框-
x 1 3 2 5 3 5 4 1 5 5 6 4 7 5 8 5 9 4 10 3 11 4 12 1 13 7 14 2 15 6 16 10 17 5 18 9 19 4 20 4
要加载zoo包并在上面创建的数据框中找到x中每5个值的标准偏差,请将以下代码添加到上面的代码段中-
x<-rpois(20,5) df1<-data.frame(x) library(zoo) df1$SD_5<-rep(rollapply(df1[,1],width=5,by=5,sd),each=5) df1输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x SD_5 1 3 1.788854 2 5 1.788854 3 5 1.788854 4 1 1.788854 5 5 1.788854 6 4 0.836660 7 5 0.836660 8 5 0.836660 9 4 0.836660 10 3 0.836660 11 4 2.549510 12 1 2.549510 13 7 2.549510 14 2 2.549510 15 6 2.549510 16 10 2.880972 17 5 2.880972 18 9 2.880972 19 4 2.880972 20 4 2.880972
示例2
以下代码段创建了一个示例数据框-
y<-rnorm(20) df2<-data.frame(y) df2
创建以下数据框-
y 1 -0.59258077 2 0.44336315 3 1.03389921 4 -0.50471102 5 -0.10370441 6 1.49547406 7 0.18575630 8 -0.73030467 9 -1.15666426 10 1.68174045 11 -0.03226993 12 -0.49435218 13 -1.98371898 14 2.04194072 15 2.44473953 16 0.26519508 17 -0.36658534 18 -0.15745538 19 0.15730767 20 0.91778671
要在上面创建的数据框中找到y中每4个值的标准偏差,请将以下代码添加到上面的代码段中-
y<-rnorm(20) df2<-data.frame(y) df2$SD_4<-rep(rollapply(df2[,1],width=4,by=4,sd),each=4) df2输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
y SD_4 1 -0.59258077 0.7821571 2 0.44336315 0.7821571 3 1.03389921 0.7821571 4 -0.50471102 0.7821571 5 -0.10370441 0.9373014 6 1.49547406 0.9373014 7 0.18575630 0.9373014 8 -0.73030467 0.9373014 9 -1.15666426 1.2126483 10 1.68174045 1.2126483 11 -0.03226993 1.2126483 12 -0.49435218 1.2126483 13 -1.98371898 2.0195767 14 2.04194072 2.0195767 15 2.44473953 2.0195767 16 0.26519508 2.0195767 17 -0.36658534 0.5628322 18 -0.15745538 0.5628322 19 0.15730767 0.5628322 20 0.91778671 0.5628322