我有两个data.frame
,一个值为“size”进行测试,另一个具有N1到N2的间隔进行测试。如果是这种情况,那么它会将TRUE打印到新列“test”
答案 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应该基于什么。