Ich habe eine Tabelle, die wie folgt aussieht:R: Mittelwert Reihe basierend auf Spaltennamen teilweise Übereinstimmung
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
Ich mag die Reihe bedeutet, zwischen den Spalten mit teilweise Übereinstimmungen berechnen, um ein Ergebnis zu geben wie folgt aus:
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
ich einige nützliche Tipps zu dieser Frage finden tat:
Calculate row means based on (partial) matching column names
aber es scheint nicht für mich zu arbeiten. Hier sind die Befehle, die ich verwende:
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))]) )
Dieser letzte Befehl gibt mir die folgende Fehlermeldung:
Error in rowMeans(test[, grep(x, names(test))]) :
'x' must be an array of at least two dimensions
Hier ist die dput meines Datenrahmen:
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"))
Jede Idee, warum Ich bekomme diesen Fehler und wie könnte ich das beheben?
Vielen Dank!
Danke, es scheint zu funktionieren! Ich möchte nur verstehen, was das bewirkt. Funktioniert es mit einem anderen Format von Spaltennamen, z.B. as_1, er_22 usw.? – arielle
@arielle Wenn das Format der Namen 'as_1' ist,' er_22', dann 'sub (" _. * "," ", Namen (df1))' – akrun
hört sich gut an, danke! – arielle