5
我有一個表,看起來像這樣:R:計算行平均基於對列名的部分匹配
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
我沒有找到關於這個問題的一些有用的提示:
Calculate row means based on (partial) matching column names
但它似乎並沒有爲我工作。下面是我使用的命令:
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))]) )
這最後一個命令給了我以下錯誤:
Error in rowMeans(test[, grep(x, names(test))]) :
'x' must be an array of at least two dimensions
這裏是我的數據幀的dput:
structure(list(er = c(1L, 1L, 8L, 1L, 9L), er.1 = c(6L, 8L, 7L,
0L, 7L), as = c(90L, 56L, 6L, 8L, 2L), as.1 = c(8L, 7L, 4L, 6L,
4L), as.2 = c(6L, 5L, 5L, 4L, 3L), rt = c(4L, 5L, 9L, 3L, 89L
), op = c(87L, 9L, 6L, 6L, 7L)), .Names = c("er", "er.1", "as",
"as.1", "as.2", "rt", "op"), class = "data.frame", row.names = c("a",
"b", "c", "d", "e"))
知道爲什麼我收到這個錯誤,我該如何解決這個問題?
謝謝!
謝謝,這似乎是工作!我只想了解它的功能。它是否適用於不同格式的列名稱,例如as_1,er_22等? – arielle
@arielle如果名稱的格式是'as_1','er_22',那麼'sub(「_。*」,「」,names(df1))' – akrun
聽起來不錯,謝謝! – arielle