У меня есть вывод из программы, аналогичной этому фрейму данных:
df <- data.frame(Pos = c(1, 2, 3), Alel1 = c('A:1', 'T:0', 'C:0.5'),
Alel2 = c('T:0', 'C:1', 'A:0.3'), Alel3 = c(NA, NA, 'T:0.2'),
Alel4 = c('A:1', 'T:1', 'C:0.5'), Alel5 = c('T:0', 'C:0', 'A:0.5'),
Alel6 = c(NA, NA, NA))
Для каждой строки я хотел бы получить главный аллель Alel1, Alel 2 и Alel3 ( group1 ) и главный аллель Alel4, Alel 5 и Alel6 ( группа2 ). Плюс дополнительная информация о том, как отличаются основные аллели в группах 1 и 2 (, меняется ). Итак, я получаю новый столбец / фрейм данных, обобщающий информацию об аллелях, более менее похожий на этот:
df1 <- data.frame(Group1 = c("A", "C", "C"),
Group2 = c("A","T","0.5C 0.5A"),
Changing = c(0,1,0.5))
Я пытаюсь отделить аллели от каждого столбца и добавить в новый столбец, используя этот
df$a <- substring(df$Alel1, 3)
df$b <- substring(df$Alel2, 3)
df$c <- substring(df$Alel3, 3)
затем найдите максимальное значение для каждой группы, используя этот
i <- as.character(c("a","b","c"))
j <- max.col(df[i],"first")
Но значения в j возвращаются с NA вместо имени столбца, и яне знаю, как вызвать соответствующий аллель из названия этого столбца. Любые более простые предложения, которые дают то, что я намеревался, очень ценятся!