测试x和y之间的值

时间:2017-07-05 14:13:23

标签: r dataframe

我有两个data.frame,一个值为“size”进行测试,另一个具有N1到N2的间隔进行测试。如果是这种情况,那么它会将TRUE打印到新列“test”

2 个答案:

答案 0 :(得分:1)

以下是使用data.table的非等连接的解决方案:

library(data.table)

setDT(Df1)
setDT(Df2)

Df1[, test := FALSE]

Df1[Df2, test := TRUE, on = .(ID, size >= N1, size <= N2)]
# > Df1
#    size  ID  test
# 1:  399 ID1  TRUE
# 2:  887 ID2  TRUE
# 3:  350 ID1  TRUE
# 4: 1400 ID2 FALSE
# 5: 1455 ID2 FALSE
# 6: 1700 ID2 FALSE
# 7: 1654 ID1 FALSE
# 8:  928 ID1 FALSE
# 9: 1228 ID1  TRUE

答案 1 :(得分:-1)

不是100%肯定,如果Df1的大小在N1之内且从Df2的N2大小,你想要TRUE / FALSE吗?如果是这样,你可以使用%from data.table。

df1 <- read.table(text = "size    ID
                   399     ID1
                  887     ID2
                  350     ID1
                  1400    ID2
                  1455    ID2
                  1700    ID2
                  1654    ID1
                  928     ID1
                  1228    ID1", header = T)

df2 <- read.table(text = "ID  N1      N2
ID1 298     500
                  ID1 560     706
                  ID1 809     925
                  ID1 959     1195
                  ID1 1126    1472
                  ID1 1386    1413
                  ID2  800    950
                  ID2 1074    1203
                  ID2 1462    1486
                  ID2 1542    1658", header = T)

library(data.table)

df1$Test <- ifelse(df1$size %between% c(df2$N1, df2$N2), TRUE, FALSE)

这个答案并没有回复你所期望的,因为我真的不明白TRUE / FALSE应该基于什么。