Сравнение двух столбцов фрейма данных во многих строках
у меня есть фрейм данных, с которым я работаю, в котором я хотел бы сравнить точку данных Genotype
С двух ссылок S288C
и SK1
. Это сравнение будет выполнено во многих строках (100+) фрейма данных. Вот первые несколько строк моего фрейма данных:
Assay Genotype S288C SK1
1 CCT6-002 G A G
2 CCT6-007 G A G
3 CCT6-013 C T C
4 CCT6-015 G A G
5 CCT6-016 G G T
в качестве конечного продукта я хотел бы строку символов 1 (S288C
) и 0 (SK1
) в зависимости от того, какая из ссылок данных игр. Таким образом, в приведенном выше примере я хотел бы выход 00001
так как все кроме последнего матча SK1
.
1 ответов
вложенные ifelse
должен это сделать (взгляните на help(ifelse)
для использования):
ifelse(dat$Genotype==dat$S288C,1,ifelse(dat$Genotype==dat$SK1,0,NA))
С этими тестовыми данными:
> dat
Genotype S288C SK1
[1,] "G" "A" "G"
[2,] "G" "A" "G"
[3,] "C" "T" "C"
[4,] "G" "A" "G"
[5,] "G" "G" "T"
[6,] "G" "A" "A"
получаем:
> ifelse(dat$Genotype==dat$S288C,1,ifelse(dat$Genotype==dat$SK1,0,NA))
[1] 0 0 0 0 1 NA
(Примечание: если у вас возникли проблемы с использованием этого, вы захотите убедиться, что столбцы являются векторами и не рассматриваются R как факторы...простой цикл for должен сделать это: for (i in 1:ncol(dat)){dat[,i]=as.vector(dat[,i])}
).