首页 > 解决方案 > 在R中将字符串分解为多个虚拟变量

问题描述

我在R中有下表

id<-c(1,2,3,4)
medal<-c("2021-2020-2018","NA","2019","2015-2014-2012") 
df<-data.frame(id,medal)

 id          medal
 1      2021-2020-2018
 2             NA
 3            2019
 4      2015-2014-2012

并希望将奖牌列分解为每个 id 的多个虚拟变量,如下所示:

 id          medal         2021   2020    2019   2018  2015  2014   2012
 1      2021-2020-2018      1       1       0      1    0     0      0 
 2             NA           0       0       0      0    0     0      0 
 3            2019          0       0       1      0    0     0      0 
 4      2015-2014-2012      0       0       0      0    1     1      1

我会很感激你的帮助。

标签: rdataframe

解决方案


qdapTools有一个功能可以做到这一点,你只需medal要先拆分列:

library(qdapTools)

df <- cbind(df, mtabulate(strsplit(df$medal, "-")))
df[, names(df) != "NA"]

推荐阅读