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