R:根据R中的最后一列值有条件地删除行

时间:2017-05-14 17:03:51

标签: r

我有两个excel文件包含数据 第一个excel文件如下: frequency.xlsx

和第二个excel文件包含数据: interval.xlsx

intervalStart   intervalEnd
1                 10
11                20
31                40
51                70

现在我想编写一个R代码,它读取interval.xlsx文件的第一行,并在第一个文件(frequency.xlsx)中与最后一列中的每个值(即col 8)值进行比较,如果值为,则删除整行在intervalStart和intervalEnd之间。

对于前任 读取interval.xlsx的第一行,即 1和10 现在检查frequency.xlsx的最后一列中的每个值,如果值在 1和10之间,则删除整行,否则继续。 再次读取interval.xlsx的第二行并继续

所以请帮帮我

1 个答案:

答案 0 :(得分:0)

Bioconductor包IRanges有许多功能可以使用范围:

require(IRanges)
a<-data.frame(start=c(1,11,31,51),
           end=c(10,20,40,70))
aranges <- IRanges(a$start,a$end)

b <- data.frame(Col1=sample(LETTERS,75, replace=T),
                Col2 = 1:75)
branges <- IRanges(b$Col2, b$Col2)

b[!overlapsAny(branges,aranges),]
# Col1 Col2
# 21    R   21
# 22    G   22
# 23    I   23
# 24    H   24
# 25    G   25
# 26    I   26
# 27    V   27
# 28    T   28
# 29    Z   29
# 30    E   30
# 41    H   41
# 42    J   42
# 43    A   43
# 44    N   44
# 45    H   45
# 46    P   46
# 47    T   47
# 48    L   48
# 49    P   49
# 50    U   50
# 71    U   71
# 72    B   72
# 73    K   73
# 74    R   74
# 75    Y   75