I have:
id choice
----------
1 "a,b,c"
2 "c"
3 "a,c"
4 "b,c"
I need
id a b c
---------
1 1 1 1
2 0 0 1
3 0 0 1
4 0 1 1
(or equivalent with TRUE/FALSE values)
Is there any way to do this in R? I've looked into strsplit but that doesn't seem to help.
This is exactly what cSplit_e from my "splitstackshape" package is designed to do.
library(splitstackshape)
cSplit_e(DF, "choice", sep = ",", mode = "binary",
type = "character", fill = 0, drop = TRUE)
# id choice_a choice_b choice_c
# 1 1 1 1 1
# 2 2 0 0 1
# 3 3 1 0 1
# 4 4 0 1 1
This uses DF from @G.Grothendieck's answer as the input:
Lines <- 'id choice
----------
1 "a,b,c"
2 "c"
3 "a,c"
4 "b,c"'
DF <- read.table(text = Lines, header = TRUE, comment = "-", as.is = TRUE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With