Próbuję wyczyścić niektóre niepoprawnie wprowadzone dane. Pytanie do zmiennej pozwala na wielokrotne odpowiedzi z pięciu wyborów, ponumerowanych jako 1 do 5. Dane zostały wprowadzone w następujący sposób (jest to tylko przykład - w danych jest o wiele więcej zmiennych i więcej obserwacji) ramka):Rozdziel kolumnę połączonych danych rozdzielanych przecinkami i przekoduj dane wyjściowe jako czynniki
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
Oto niektóre kodu do odtworzenia tego przykładu dane:
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"))
Co tak naprawdę potrzebne jest dane mają być traktowani ... binary - jak zestaw „tak/brak "pytań" wprowadzonych w ramce danych, która wygląda bardziej jak:
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
Rzeczywiste nazwy zmiennych nie mają w tej chwili znaczenia - mogę to łatwo naprawić. Poza tym nie ma znaczenia, czy brakujące elementy to "O", "NA", czy puste - znowu, to coś, co mogę naprawić później.
Próbowałem używać funkcji transform
z pakietu reshape
, a także karmić różne rzeczy z strsplit
, ale nie mogę dostać, aby zrobić to, czego szukam. Spojrzałem również na wiele innych powiązanych pytań na temat Stackoverflow, ale nie wydają się być całkiem ten sam problem.
Oto jedna wkładka automatycznie określić odpowiednią wartość dla zmiennej '' ncol' V1': 'max (as.numeric (nie wyświetlać na liście (strsplit (dd $ V1, ""))))' (zakładając, że ostatnia z wielu odpowiedzi została podana jako odpowiedź przynajmniej raz) – BenBarnes