Wie swap-Werte zwischen zwei Spalten
Habe ich einen Daten-frame mit drei Variablen und 250K Datensätze. Als Beispiel betrachten wir
df <- data.frame(V1=c(1,2,4), V2=c("a","a","b"), V3=c(2,3,1))
V1 V2 V3
1 a 2
2 a 3
4 b 1
wollen und swap-Werte zwischen V1 und V3 basierend auf dem Wert von V2 wie folgt:
wenn V2 == 'b'
dann V1 <- V3
und V3 <- V1
was in
V1 V2 V3
1 a 2
2 a 3
1 b 4
Versuchte ich eine do-Schleife, aber es dauert ewig. Wenn ich mit Perl, es dauert Sekunden. Ich glaube, dass diese Aufgabe erledigt werden kann effizient in R als gut. Anregungen werden geschätzt.
- Ich bin gespannt, wie diese situation kam, wenn Sie nichts dagegen haben, meine Frage. Ich habe einige Erfahrung mit software, die zumindest etwas speziell für die Arbeit mit survey-Daten, sondern wir Folgen dem trend der Integration mit Datenbanken, Fragen des Daten-Struktur haben begonnen, die kommen und die ich brauchte, um starten Sie denken bewusst darüber, wie wir die store-Inhalte in Tabellen. Das ist, warum ich bin gespannt, wie deine situation kam 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
welche ergibt:
Können Sie
transform
um dies zu tun.Herausgegeben bekam ich stolperte mit Spaltennamen, sorry. Dieser funktioniert.
Wenn Sie nichts dagegen haben, die Zeilen enden in unterschiedlicher Reihenfolge, das ist irgendwie eine "süße" Art und Weise, dies zu tun:
Im Grunde ist, dass Sie nur greifen die Zeilen, in denen
V2 == 'b'
, kehrt sich die Spalten und schlägt es zurück, zusammen mit allem anderen. Diese Frist kann verlängert werden, wenn Sie mehr Spalten, die Sie nicht benötigen schalten, Sie würden nur verwenden Sie einen ganzzahligen index mit der diese Werte umgesetzt werden, statt nur3:1
.