Перешли по ссылкам ниже, но это частично решило мою проблему.
объединение нескольких столбцов ИСТИНА / ЛОЖЬ в один
Объединение матрицы ИСТИНА / ЛОЖЬв один
R: преобразование нескольких логических столбцов в однофакторный столбец
У меня есть кадр данных, который выглядит следующим образом:
dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
A = c('Y','N','N','N','N','N','N','N'),
B = c('N','Y','N','N','N','N','Y','N'),
C = c('N','N','Y','N','N','Y','N','N'),
D = c('N','N','N','Y','N','Y','N','N'),
E = c('N','N','N','N','Y','N','Y','N')
)
Я хочу изменить форму моего df с одним столбцом, но он должен давать приоритеты, когда в строке 2 "Y".
Приоритет A> B> C> D> E, что означает, что ихЕсли в A "Y", то результирующее значение должно быть A. Аналогично, в вышеприведенном примере df и C, и D имеет "Y", но в результирующем df должно быть "C".Следовательно, вывод должен выглядеть следующим образом:
resultant_dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
Result = c('A','B','C','D','E','C','B','NA')
)
Я пробовал это:
library(reshape2)
new_df <- melt(dat, "Id", variable.name = "Result")
new_df <-new_df[new_df$value == "Y", c("Id", "Result")]
Но проблема не в том, чтобы обработать приоритет, он создает 2 строки для одного идентификатора.