У меня есть следующий фрейм данных, который был создан из вопросника:
id <- c(1, 2, 3, 4, 5)
type <- c("1,2,3", "2", "2,3,4", "4", "1")
ex_df <- data.frame(id, a, stringsAsFactors=F)
ex_df$type
имеет классовый характер, и каждый ди git представляет тип шахматной фигуры:
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
Пока я пытался преобразовать ex_df$type
в список с числовыми значениями c, используя strsplit()
, чтобы затем использовать вложенный lapply()
с dplyr mutate()
в сочетании с when_case()
, но это не сработало. У меня проблемы с вложенными списками, поэтому, возможно, мой подход не верный?
Я тщательно искал перед публикацией, но мне кажется, что я упускаю что-то очень очевидное, например функцию, о которой я не знаю это делает именно это. Возможно, я не ищу решения в правильном направлении?