如何计算 R 中多个数据集的特定变量的方差

How to calculate the variance of specific variable across multiple datasets in R

我有 3 个数据集,每个数据集都有变量 time_tickgyr_X_valuegyr_Y_valuegyr_Z_value

其中一个数据集的例子如下:

 time_tick gyr_X_value  gyr_Y_value  gyr_Z_value
1   .01    .12             .24         -.28               
2   .12      0               0          .05
3   .04    .10               0          .17
4   .03      0            -.25          .15

我知道我可以用 var() 计算每个单独数据集的方差,但是我如何计算所有三个数据集的 gyr_X_value 的方差?

我们可以将数据集放在 list 中,提取 'gyr_X_value' 列,如果我们需要找到每一行的方差,则使用 rowVars

library(matrixStats)
rowVars(sapply(list(df1, df2, df3), `[[`, 'gyr_X_value'))

假设,兴趣是为每个数据集找到特定列的方差,然后在提取列

后使用var
sapply(list(df1, df2, df3), function(x) var(x[['gyr_X_value']]))

注意:对象名称假定为 'df1'、'df2'、'df3'

您可以使用 rbind。给定数据框a、b、c,可以按行组合

combined <- rbind(a,b,c)

See here for detailed usage.。然后您可以像往常一样在给定列上使用 var(),例如 combined[ 2].

对于这类问题,我强烈推荐 tidyverse 方法。

您的数据:

df <- read.table(text = "time_tick gyr_X_value  gyr_Y_value  gyr_Z_value
1   .01    .12             .24         -.28               
2   .12      0               0          .05
3   .04    .10               0          .17
4   .03      0            -.25          .15", header = TRUE)

计算:

library(tidyverse)

df %>% gather(variable, value, -time_tick) %>%
  group_by(variable) %>%
  summarize(variance = var(value))

## A tibble: 3 x 2
#     variable variance
#        <chr>    <dbl>
#1 gyr_X_value 0.004100
#2 gyr_Y_value 0.040025
#3 gyr_Z_value 0.043425

解释:首先,gather 函数将宽数据框变成长数据框:

df %>% gather(variable, value, -time_tick)
#   time_tick    variable value
#1       0.01 gyr_X_value  0.12
#2       0.12 gyr_X_value  0.00
#3       0.04 gyr_X_value  0.10
#4       0.03 gyr_X_value  0.00
#5       0.01 gyr_Y_value  0.24
#6       0.12 gyr_Y_value  0.00
#7       0.04 gyr_Y_value  0.00
#8       0.03 gyr_Y_value -0.25
#9       0.01 gyr_Z_value -0.28
#10      0.12 gyr_Z_value  0.05
#11      0.04 gyr_Z_value  0.17
#12      0.03 gyr_Z_value  0.15

group_by() 函数然后通过 variable 设置分组,summarize() 函数在分组内分别计算方差。