Ich möchte rowMeans eines Spaltenbereichs berechnen, aber ich kann den hartcodierten Wert für colnames (zB c (C1, C3)) oder Bereich (zB C1: C3) als beide Namen und Bereich sind variabel. Mein df wie folgt aussieht:Berechne rowMeans für einen Spaltenbereich (Variablennummer)
> df
chr name age MGW.1 MGW.2 MGW.3 HEL.1 HEL.2 HEL.3
1 123 abc 12 10.00 19 18.00 12 13.00 -14
2 234 bvf 24 -13.29 13 -3.02 12 -0.12 24
3 376 bxc 17 -6.95 10 -18.00 15 4.00 -4
Dies ist nur ein Beispiel ist, in Wirklichkeit habe ich Spalten bis hin in MGW.1 ... MGW.196 und so. Anstatt die genauen Spaltennamen oder einen exakten Bereich anzugeben, möchte ich die Initialen von Spaltennamen übergeben und möchte den Durchschnitt aller Spalten mit diesen Initialen erhalten. Etwas wie: MGW=rowMeans(df[,MGW.*]), HEL=rowMeans(df[,HEL.*])
So sollte meine letzte Ausgabe wie folgt aussehen:
> df
chr name age MGW Hel
1 123 abc 12 10.00 19
2 234 bvf 24 13.29 13
3 376 bxc 17 -6.95 10
Ich weiß, dass diese Werte nicht korrekt sind, aber es ist nur Sie und Idee zu geben. Zweitens möchte ich alle diese Zeilen aus dem Datenrahmen entfernen, die NA in der gesamten Zeile mit Ausnahme der ersten 3 Werte enthält. Hier
ist die dput für Probe Beispiel:
> dput(df)
structure(list(chr = c(123L, 234L, 376L), name = structure(1:3, .Label = c("abc",
"bvf", "bxc"), class = "factor"), age = c(12L, 24L, 17L), MGW.1 = c(10,
-13.29, -6.95), MGW.2 = c(19L, 13L, 10L), MGW.3 = c(18, -3.02,
-18), HEL.1 = c(12L, 12L, 15L), HEL.2 = c(13, -0.12, 4), HEL.3 = c(-14L,
24L, -4L)), .Names = c("chr", "name", "age", "MGW.1", "MGW.2",
"MGW.3", "HEL.1", "HEL.2", "HEL.3"), class = "data.frame", row.names = c(NA,
-3L))
Ich habe gestern eine verwandte Frage gestellt und die Antworten könnten Ihnen helfen t. Hier ist der Link http: // Stackoverflow.com/questions/38594808/better-way-of-adding-data-frame-columns-by-refering-to-indeces – Warner
@Warner Wie ich in meiner Frage erwähnt habe, kann ich die colnames oder Indizes nicht explizit erwähnen, weil sie variabel sind Manchmal wird es 196 Spalten geben, für die ich eine Zeile möchte und manchmal wird es 198 oder so sein. – Newbie
Sie können Teilmenge 'df' mit einem" logischen "Vektor von Positionen angeben, wobei' Namen (df) ''? StartsWith' '" MGW "usw. usw. Außerdem finden Sie'? Complete.cases', um Zeilen zu finden, die nur 'enthalten NA' (nach Unterteilung aller bis auf die ersten drei Spalten). –