Послеобеденные умные люди.R - Значение настройки на основе соответствия имени столбца
У меня есть набор данных приличного размера (> 800k строк), и в качестве примера я вытащил крошечный образец из 20 столбцов на 2 строки. В начале только столбец «Темы» заполняется вектором, все остальные столбцы имеют значение FALSE.
Это будет восстановить данные, как он сидит в настоящее время ...
Topics <- c("E11,E31,E313,ECAT" , "E1,E20")
E1 <- c(FALSE, FALSE)
E11 <- c(FALSE, FALSE)
E20 <- c(FALSE, FALSE)
E30 <- c(FALSE, FALSE)
E31 <- c(FALSE, FALSE)
E100 <- c(FALSE, FALSE)
E300 <- c(FALSE, FALSE)
E313 <- c(FALSE, FALSE)
ECAT <- c(FALSE, FALSE)
df <- data.frame(Topics,E1,E11,E20,E30,E31,E100,E300,E313,ECAT)
Который даст что-то вроде ...
Topics E1 E11 E20 E30 E31 E100 E300 E313 ECAT
E11,E31,E313,ECAT FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
E1,E20 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Я хочу, чтобы установить соответствующую строку, столбец TRUE, где есть совпадение для каждого из элементов в векторе темы. Так оно и должно выглядеть примерно так ...
Topics E1 E11 E20 E30 E31 E100 E300 E313 ECAT
E11,E31,E313,ECAT FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE
E1,E20 TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
До сих пор мне не удалось вконец работать это один из, но я подозреваю, что это что-то вроде:
- разделить тему в вектор с помощью
strsplit
- для каждого элемента в векторе попытаться соответствовать к
names(df)
- при сопоставлении набора строк, столбец == TRUE
НО Я пробовал все виды и не могу понять логику. Может ли кто-нибудь сломать это для меня, пожалуйста?
В ожидаемом результате 'E313' должен быть' TRUE' вместо 'E300' – akrun