【发布时间】:2020-01-28 00:20:57
【问题描述】:
我有以下根据问卷创建的数据框:
id <- c(1, 2, 3, 4, 5)
type <- c("1,2,3", "2", "2,3,4", "4", "1")
ex_df <- data.frame(id, type, stringsAsFactors=F)
ex_df$type是类字符,每个数字代表一种棋子:
1 = pawn
2 = rook
3 = knight
4 = bishop
我想根据ex_df$type列中的字符为每种类型的棋子创建一个单独的列,其中1表示棋子在列表中,0表示不是。
最终的数据框应如下所示:
'data.frame': 5 obs. of 6 variables:
$ id : num 1 2 3 4 5
$ type : chr "1,2,3" "2" "2,3,4" "4" ...
$ pawn : num 1 0 0 0 1
$ rook : num 1 1 1 0 0
$ knight: num 1 0 1 0 0
$ bishop: num 0 0 1 1 0
表格形式:
id type pawn rook knight bishop
1 1,2,3 1 1 1 0
2 2 0 1 0 0
3 2,3,4 0 1 1 1
4 4 0 0 0 1
5 1 1 0 0 0
到目前为止,我尝试使用strsplit() 将ex_df$type 转换为具有数值的列表,然后将嵌套lapply() 与dplyr 的mutate() 结合使用when_case() 但这不起作用。我在使用嵌套列表时遇到问题,所以我的方法可能不正确?
我在发布之前进行了彻底的搜索,但感觉我在这里遗漏了一些非常明显的东西,比如我不知道的功能正是这样做的。也许我不是在寻找正确方向的解决方案?
【问题讨论】:
标签: r conditional-statements nested-lists dplyr