R:根据列名部分匹配计算行平均值

时间:2016-10-25 17:28:00

标签: r

我有一个看起来像这样的表:

Mockito

我想计算具有部分匹配名称的列之间的行平均值,得到如下结果:

1.9.5

我确实在这个问题上找到了一些有用的提示:

Calculate row means based on (partial) matching column names

但它似乎对我不起作用。以下是我使用的命令:

  er er.1 as as.1 as.2 rt op
a  1    6 90    8    6  4 87
b  1    8 56    7    5  5  9
c  8    7  6    4    5  9  6
d  1    0  8    6    4  3  6
e  9    7  2    4    3 89  7

这最后一个命令给出了以下错误:

    er   as           rt     op
a   3.5  34.66666667  4      87
b   4.5  22.66666667  5      9
c   7.5  5            9      6
d   0.5  6            3      6
e   8    3            89     7

以下是我的数据框的输入:

test <- read.table("test.txt", header=TRUE, row.names=1)

colnames <- c("er", "er", "as", "as", "as", "rt", "op")

means <-sapply(colnames, function(x) rowMeans(test [, grep(x, names(test))] )  )

知道我为什么会收到此错误以及如何解决此问题?

谢谢!

1 个答案:

答案 0 :(得分:5)

我们可以split获取rowMeans

sapply(split.default(df1, sub("\\..*", "", names(df1))), rowMeans)
#        as  er op rt
#a 34.66667 3.5 87  4
#b 22.66667 4.5  9  5
#c  5.00000 7.5  6  9
#d  6.00000 0.5  6  3
#e  3.00000 8.0  7 89