拆分字符串并在 R 中创建虚拟对象

Split a string and create dummies in R

我有类似 val1 的东西,其中分隔符是 ,。我想拆分 val1 然后创建假人。如何解决这个问题。非常感谢。

val1 <- c("ab, cd, ef", "", "gh")
val2 <- c('John','Peter','Jolie')
data <- data.frame(val1,val2); data
     

预期答案

      ab cd ef gh
John  1   1  1  0
Peter 0   0  0  0
Jolie 0   0  0  1

base R中,使用strsplit根据,和任何space将'val1'拆分为list,将 list 的名称设置为 'val2',stack 将其设置为两列 data.frame 并应用 table

out <- table(stack(setNames(strsplit(data$val1, ",\s+"), data$val2))[2:1])
names(dimnames(out)) <- NULL

-输出

> out
      ab cd ef gh
John   1  1  1  0
Peter  0  0  0  0
Jolie  0  0  0  1