Ich habe die folgenden Themen gelesen, die ähnlich zu sein scheinen (aber immer noch andere) Fragen mit mir:R Wie Spalten in einer Tabelle nach Spaltenreihenfolge in einer anderen Tabelle zu finden und neu anordnen (Tabellen enthalten Diff Anzahl der Spalten)
- Order data frame rows according to a target vector that specifies the desired order
- How to reorder data.table columns (without copying)
meine Fragen sind anders, weil in Thread 1 sind die beiden Tabellen gleiche Länge haben, und ich versuchte Methode in Thread angegeben unter Verwendung von 2, aber scheint, wie sie müssen auch gleich sein Länge.
für Illustrationszwecke, werde ich zwei Tabellen erstellen, wie folgend:
table1 = data.frame(rbind(c(rep(c(TRUE,FALSE), 3)), c(rep(TRUE, 4), rep(FALSE, 2))))
dim(table1)
setnames(table1, letters[1:6])
table1
a b c d e f
1 TRUE FALSE TRUE FALSE TRUE FALSE
2 TRUE TRUE TRUE TRUE FALSE FALSE
table2 = data.frame(rbind(c(rep(c(TRUE,FALSE), 2)), c(rep(TRUE, 3), rep(FALSE, 1))))
dim(table2)
setnames(table2, letters[7:4])
table2
g f e d
1 TRUE FALSE TRUE FALSE
2 TRUE TRUE TRUE FALSE
die gewünschte Rückkehr wäre:
f e d
1 FALSE TRUE FALSE
2 FALSE FALSE TRUE
die Rückgabetabelle die folgenden Kriterien passen:
- enthält nur die Buchstaben existieren in beiden Tabellen
- Reihenfolge der Rückgabetabelle ist mit der Reihenfolge in der Tabelle konsistent 2
Grundsätzlich Ich möchte meine tabelle1 reinigen nur Spaltennamen enthalten, die auch in table2 existieren, und ich möchte, dass die tabelle1 Spalten neu geordnet werden in der Reihenfolge wie die Spalten in Tabelle 2.
Lassen Sie mich wissen, wenn ich noch etwas klären muss! Vielen Dank!
was ist mit f? 'table1 [intersect (Namen (table2), Namen (table1))]'? Welche Pakete verwendest du? Woher kommt 'setnames'? – rawr
Warum wird Spalte f von der gewünschten Ausgabe ausgeschlossen? – FascinatingFingers
@FascinatingFingers guter Fang! mein Fehler! werde jetzt reparieren mein errow – alwaysaskingquestions