Я хотел бы создать функцию для создания, которая проверяет уникальные слова в одной строке, спускаясь вниз по столбцу и создавая фиктивные столбцы на основе этого. Например:
ID Letters
1 A, B, C
2 C, D
3 A
4 B, D
5 Z
6 A
Ожидаемый результат будет:
ID Letters Letter_A Letter_B Letter_C Letter_D Letter_Z
1 A, B, C 1 1 1 0 0
2 C, D 0 0 1 1 0
3 A 1 0 0 0 0
4 B, D 0 1 0 1 0
5 Z 0 0 0 0 1
6 A 1 0 0 0 0
Я нашел этот блок кода
uniq <- unique(unlist(strsplit(as.character(df$values),', ')))
m <- matrix(0, nrow(df), length(uniq), dimnames = list(NULL, paste0("Letter_", uniq)))
for (i in seq_along(df$values)) {
k <- match(df$values[i], uniq, 0)
m[i,k] <- 1
}
Где uniq создаст новый удерживайте каждое уникальное слово через запятую и создайте новый столбец Letter_A et c. Однако forl oop будет проверять только первую букву в столбце. Таким образом, текущий результат выглядит так, когда другие буквы не меняются на 1
ID Letters Letter_A Letter_B Letter_C Letter_D Letter_Z
1 A, B, C 1 0 0 0 0
2 C, D 0 0 1 0 0
3 A 1 0 0 0 0
4 B, D 0 1 0 0 0
5 Z 0 0 0 0 1
6 A 1 0 0 0 0