R 跨多行比较数据帧中的两列

R 跨多行比较数据帧中的两列,r,dataframe,R,Dataframe,我有一个我正在使用的数据框架,我想在其中比较一个数据点基因型和两个参考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

我有一个我正在使用的数据框架,我想在其中比较一个数据点
基因型
和两个参考
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
之外,所有的
ifelse
嵌套的
ifelse都应该这样做(查看
help(ifelse)
,了解用法):

使用此测试数据:

> 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])

您在比较什么,如何进行比较?给我们一些与样本输入一起的样本输出。我正在将基因型与下面两列S288C和SK1中的每一列进行比较。当基因型与S288C相同时,我想输出一个“1”,当它与SK1相同时,我想输出一个“0”。如果它既不匹配“NA”。我希望在每一行进行比较。这有用吗?第7000R题?!这很有效。非常感谢。如果我想将结果作为一个新的列添加到数据框中(即在SK1列之后),我会怎么做?很抱歉,如果这是基本的,但我对R和一般编程非常陌生。
cbind
函数应该可以工作:
newdat当我运行上面的cbind函数时,它会返回一个由两部分组成的数据帧。第一部分是原始数据帧,第二部分是使用上述语言进行的调用以及相应的行号。有没有办法让这些数据在同一个数据框内对齐?
> ifelse(dat$Genotype==dat$S288C,1,ifelse(dat$Genotype==dat$SK1,0,NA))
[1]  0  0  0  0  1 NA