Ich versuche, einige Daten zu bereinigen, die falsch eingegeben wurde. Die Frage für die Variable erlaubt mehrere Antworten von fünf Auswahlmöglichkeiten, nummeriert als 1 bis 5. Die Daten wurden auf folgende Weise eingegeben (dies ist nur ein Beispiel - es gibt viel mehr Variablen und viele weitere Beobachtungen in den tatsächlichen Daten Rahmen):Teilen Sie eine Spalte von verketteten kommaseparierten Daten und recode-Ausgabe als Faktoren
data
V1
1 1, 2, 3
2 1, 2, 4
3 2, 3, 4, 5
4 1, 3, 4
5 1, 3, 5
6 2, 3, 4, 5
Hier einige Code, die Beispieldaten zu erstellen:
data = data.frame(V1 = c("1, 2, 3", "1, 2, 4", "2, 3, 4, 5",
"1, 3, 4", "1, 3, 5", "2, 3, 4, 5"))
Was ich brauche, sind eigentlich die Daten mehr behandelt werden ... binär - wie eine Reihe von „ja/keine "Fragen" - eingegeben in einem Datenrahmen, der eher wie folgt aussieht:
data
V1.1 V1.2 V1.3 V1.4 V1.5
1 1 1 1 NA NA
2 1 1 NA 1 NA
3 NA 1 1 1 1
4 1 NA 1 1 NA
5 1 NA 1 NA 1
6 NA 1 1 1 1
Die aktuellen Variablennamen spielen im Moment keine Rolle - das kann ich leicht beheben. Es ist auch nicht so wichtig, ob die fehlenden Elemente "O", "NA" oder leer sind - auch das kann ich später beheben.
Ich habe versucht, mit der transform
Funktion aus dem reshape
Paket sowie eine andere Dinge mit strsplit
gefüttert, aber ich kann nicht bekommen, entweder zu tun, was ich suche. Ich habe mir auch viele andere verwandte Fragen zu Stackoverflow angeschaut, aber sie scheinen nicht das selbe Problem zu sein.
Hier ist ein Einzeiler automatisch den entsprechenden Wert von 'ncol' für Variable' V1' zu bestimmen: 'max (as.numeric (fehlende oder (strsplit (dd $ V1 ""))))' (unter der Annahme, dass die letzte der mehreren Antworten mindestens einmal als Antwort gegeben wurde) – BenBarnes