使用循环以前一列的值为条件在数据框中创建新列

时间:2013-08-11 22:23:07

标签: r loops if-statement

假设我有一个数据框,其中有三列名为“SNP”(唯一ID),“A1”和“P”。

SNP | A1 | P
rs12  A    0.3426
rs16  B    0.0083
rs18  B    0.0046

我试图在名为“A2”的数据中创建新列,基于列“A1”是否有A然后R将B放在“A2”列中,如果列“A1”有一个B放置一个A列“A2”

这就是我所拥有的,我不确定我是否正确地解决了这个问题,但这是一次尝试。

data<-(read data in)
allele<-function(x) {
    isOkay<-all(data[data$A2=="A"])
    flag<- ifelse(isOkay, A, B)
      return(flag)
}

data <- split(data, data$SNP)
A2 <- sapply(data, allele)

1 个答案:

答案 0 :(得分:0)

#assating你的列A1只有两个值A和B,你的数据是mydata

mydata$A2<-with(mydata,ifelse(A1=="A","B","A")) 
> mydata
   SNP A1      p A2
1 rs12  A 0.3426  B
2 rs16  B 0.0083  A
3 rs18  B 0.0046  A