Сравнение двух столбцов фрейма данных во многих строках

у меня есть фрейм данных, с которым я работаю, в котором я хотел бы сравнить точку данных 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])}).