Beitritt Faktor Ebenen der zwei Spalten
Ich habe 2 Spalten mit Daten mit der gleichen Art von Daten (Strings).
Will ich join die Stufen der Spalten. dh. wir haben:
col1 col2
Bob John
Tom Bob
Frank Jane
Jim Bob
Tom Bob
... ... (and so on)
nun col1 hat 4 Ebenen (Bob, Tom Frank, Jim) und col2 hat 3 Ebenen (John, Jane, Bob)
Aber ich will beide Spalten haben alle faktorstufen (Bob, Tom, Frank, Jim, Jane, John), wie später ersetzen Sie jede von den 'Namen' mit einer eindeutigen id, so dass die Letzte Ausgabe wäre:
col1 col2
1 5
2 1
3 6
4 1
2 1
ist Bob -> 1, Tom -> 2, etc. in beiden Spalten.
Irgendwelche Ideen 🙂 ?
edit: vielen Dank allen für die wunderbaren Antworten! Sie sind alle genial, soweit ich weiß 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollen Sie die Faktoren, die alle eindeutige Namen aus beiden Spalten.
EDIT: ein wenig schöner, wenn Sie ersetzen die Dritte Zeile mit dieser:
Machen Sie eine einfache union-Faktor-Namen:
Und relevel die zwei Faktoren:
Nach der Bearbeitung: Hinzugefügt Beispiel, um numerische Werte, die von Faktoren
Könnte man einfach verwandeln den Faktor Ebenen, um numerische Werte, z.B.:
Oder eine einfachere, schönere Lösung basierend auf dem @Gavin Simpson ' s Tipp unten in einem Schritt:
data.frame(lapply(...
Lösung, aus lauter Faulheit.as.numeric(x$col1)
nurdata.matrix(x)
? Wenn ja, werde ich löschen meine Antwort überflüssig.data.matrix
bis jetzt, danke für die Lektion! Und ich denke, Sie sollten Sie nicht löschen, Ihre Antwort, andere Lösungen nur die Frage spannender 🙂union
Es ist der Kreislauf des Lebens 🙂Hätte schwören können, das hat nicht funktioniert, wenn ich geschrieben hatte, dem Greuel unten, aber es funktioniert jetzt:
Einfach berechnen einzigartige Reihe von Ebenen und zwingen jeden
colX
zu einem Faktor:[Original: zu zeigen, wie dumm komplexen und verborgenen kann man schreiben R-code es versucht, wirklich schwer!]
Nicht, dass das besonders elegant (und es nicht), aber...
Wir zuerst unlist die Daten:
berechnen Sie die einzigartige levels
und dann umzustrukturieren
tmp
(von oben) wieder in den gleichen Abmessungen wie die ursprünglichen Daten, konvertieren von Daten.Rahmen (Erhaltung der Saiten), lapply über diese Daten-frame und erstellt ein Faktor mit Stufenlev
berechnete oben, und endlich zwingen, um einen Daten-frame.Gibt: