在 r 中使用 if else 语句

时间:2020-12-21 08:04:10

标签: r

我只是 R 的新手,正在努力编写一个函数来获得最终表中所示的最终表。我有一个如下所示的两个不同片段的数据

chr  start  end  gene1  chr   start  end   gene2
chr1  2380  2370   0    chr1  3540   3589  0.03
chr2  4560  3458   0    chr2  4280   8790  0
chr2   4678  9846  1   chr2  4567   8648   1 
chr2  4321   5679  0.04 chr2  4621   5678  0.002

我想编写一个循环遍历数据的函数,它在gene1和gene1的每一行中看到0,它应该在finalgene中报告0,但是如果gene1和gene2有一个分数,它应该在相应的报告中报告1列和它在任一列中看到 1 或分数的地方应报告 1,如下面的最终文件所示

chr  start  end  gene1  chr   start  end   gene2 finalgene
chr1  2380  2370   0    chr1  3540   3589  0.03.  1
chr2  4560  3458   0    chr2  4280   8790  0      0
chr2   4678  9846  1   chr2  4567   8648   1      1
chr2  4321   5679  0.04 chr2  4621   5678  0.002  1

2 个答案:

答案 0 :(得分:0)

如果 gene1gene2 不等于 0 或 0,则您可以分配 1。

df$finalgene <- as.integer(df$gene1 != 0 | df$gene2 != 0)

使用 ifelse 你可以把上面写成:

df$finalgene <- ifelse(df$gene1 != 0 | df$gene2 != 0, 1, 0)

答案 1 :(得分:0)

我们也可以使用 rowSums 中的 base R

df$finalgene <- +(rowSums(df[c('gene1', 'gene2')] != 0) > 0)