2017-09-27 6 views
2

J'ai plusieurs cases à cocher dans un ensemble de données qui doivent être divisées. L'une de ces questions de cases à cocher interroge sur ce que les États quelqu'un pratique dans (donc il y a 50 options de case à cocher) Les données sont exportées dans le format ci-dessous:Rupture d'une colonne de cases à cocher contenant plusieurs réponses dans des colonnes séparées dans R

ID q143 
1 1,4,6 

Mais j'ai besoin dans ce format (un Format vrai/faux pour chaque case à cocher individuelle (non cochée/vérifié)

ID q143_1 q143_2 q143_3 q143_4 q143_5 q143_6 
100 1  0  0  1  0  1 

Puisque c'est un si grand nombre de colonnes qui doivent être faites .. des idées sur la façon de séparer cela facilement? Je pensais si, alors les déclarations, mais je pense que cela prendrait un certain temps.

Merci d'avance!

Répondre

0

Nous pourrions utiliser strsplit

v1 <- as.numeric(strsplit(df1$q143, ",")[[1]]) 
v2 <- +(Reduce(`:`, range(v1)) %in% v1) 
cbind(df1[1], setNames(as.data.frame.list(v2), paste0(names(df1)[2], "_", seq_along(v2)))) 
# ID q143_1 q143_2 q143_3 q143_4 q143_5 q143_6 
#1 1  1  0  0  1  0  1 
+0

Merci pour votre réponse! J'ai essayé ceci mais je continue à obtenir un argument de non-caractère. Des idées? –

+0

@ Heather.W Peut-être avez-vous une classe 'factor'. Essayez 'strsplit (as.character (df1 $ q143),", ")' – akrun