我有一个看起来像这样的表:
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))] ) )
知道我为什么会收到此错误以及如何解决此问题?
谢谢!
答案 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