在R中的ifelse语句中的列中添加多个整数值范围

时间:2013-09-08 15:41:00

标签: r if-statement dataframe

我正在处理基因组数据,我有关于核苷酸位置及其保护评分的列(在数据框中)。我有关于哪个核苷酸位置是内含子和哪个是外显子的数据。我想创建第三列,并能够指定哪些区域是内含子(作为“INTRON”),哪些是外显子(作为“EXON”)。

作为一个例子,假设在核苷酸位置1-70000,我想指定10000-10200,17800-21000,43000-54000作为内含子,并在另一列中保留作为外显子(假设数据)。有没有办法从ifelse函数的列中指定多个值范围,因为这或多或少会解决我的问题。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:4)

假设你有这样的数据框:

 d <- data.frame(position=round(runif(100, 1, 70000)))

您可以组合逻辑运算符:

 d$status <- ifelse(( d$position >= 1000 & d$position <= 10200) | (d$position >= 17800 & d$position <= 21000) | (d$position >= 43000 & d$position <= 54000), 'INTRON', 'EXON')

或者你可以使用嵌套的ifelse:

d$status <- ifelse(d$position >= 1000 & d$position <= 10200, 'INTRON', felse(d$position >= 17800 & d$position <= 21000, 'INTRON', ifelse(d$position >= 43000 & d$position <= 54000, 'INTRON', 'EXON')))

答案 1 :(得分:-1)

假设你有一个表包含一些信息,包括 bmi, 你可以使用这个代码

<块引用>

x$normal_bmi<- ifelse(x$bmi>=18 & x$bmi<= 25,1, 0)

然后

<块引用>

表(x$normal_bmi)

0 1

40 26