首页 > 解决方案 > 如何计算数据框中每一行的平均值?[R]

问题描述

这是df:

    # A tibble: 6 x 5
      t      a      b       c       d
  <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
1 3999. 0.00586 0.00986 0.00728 0.00856
2 3998. 0.0057  0.00958 0.00702 0.00827
3 3997. 0.00580 0.00962 0.00711 0.00839
4 3996. 0.00602 0.00993 0.00726 0.00875

我想获得所有行的平均值,除了不包括第一列。我写的代码:

df$Mean <- rowMeans(df[select(df, -"t")])

我得到的错误:

    Error: Must subset columns with a valid subscript vector.
x Subscript `select(group1, -"t")` has the wrong type `tbl_df<
  p2 : double
  p8 : double
  p10: double
  p9 : double
>`.
ℹ It must be logical, numeric, or character.

我试图将 df 转换为矩阵,但随后出现另一个错误。我应该如何解决这个问题?

现在我正在尝试使用代码计算标准误差:

se <- function(x){sd(df[,x])/sqrt(length(df[,x]))}
sapply(group1[,2:5],se)

我尝试指出应该使用哪些列来计算错误,但再次弹出错误:

 Error: Must subset columns with a valid subscript vector.
x Can't convert from `x` <double> to <integer> due to loss of precision.

我使用了有效的列下标,所以我不知道为什么会出错。

标签: r

解决方案


类似的base R解决方案是:

df$Mean <- rowMeans(df[,-1],na.rm=T)

输出:

     t       a       b       c       d      Mean
1 3999 0.00586 0.00986 0.00728 0.00856 0.0078900
2 3998 0.00570 0.00958 0.00702 0.00827 0.0076425
3 3997 0.00580 0.00962 0.00711 0.00839 0.0077300
4 3996 0.00602 0.00993 0.00726 0.00875 0.0079900

推荐阅读