我只是 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
答案 0 :(得分:0)
如果 gene1
或 gene2
不等于 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)