2017-09-04 10 views
0

Ich habe Umfrageergebnisse (kategorisch) in CSV-Datei mit mehreren Antworten innerhalb der gleichen Zelle gespeichert. Ich möchte es in separaten Spalte (Dummy-Variablen)Antworten (als Zahlen) in mehrere Spalten teilen

Die Daten sieht aus wie

response <-c(1,2,3,123) 
df <-data.frame(response) 

I unter

for(t in unique(df$response)) 
{df[paste("response",t,sep="")] <- ifelse(df$response==t,1,0)} 

das Ergebnis den Code versucht spalten hier ist, aber es erstellt ein neue Spalte für 123

head(df) 
response response1 response2 response3 response123 
1  1   1   0   0   0 
2  2   0   1   0   0 
3  3   0   0   1   0 
4  123   0   0   0   1 

ich die Daten wie unten

012 sehen möchten
response response1 response2 response3 
1  1   1   0   0 
2  2   0   1   0 
3  3   0   0   1 
4  123   1   1   1 

Schätzen Sie Ihre Hilfe und Beratung :)

+0

'cbind (df, model.matrix (~ Faktor (Antwort) -1, df))' dann die Reset Namen. – lmo

Antwort

1

Wir tun können

df1 <- cbind(df, +(sapply(1:3, grepl, x = df$response))) 
colnames(df1)[-1] <- paste0("response", colnames(df1)[-1]) 
df1 
# response response1 response2 response3 
#1  1   1   0   0 
#2  2   0   1   0 
#3  3   0   0   1 
#4  123   1   1   1 
+0

Würdest du mich bitte wissen lassen, ob es einen Weg gibt, es in dasselbe df aufzunehmen? Danke vielmals! – Omar

+0

@Omar Dann aktualisieren Sie einfach das 'df' Objekt, also' df <- cbind (df, + (sapply (1: 3, grepl, x = df $ Antwort))) ' – akrun

Verwandte Themen