【发布时间】:2019-07-11 16:27:28
【问题描述】:
我有两个要比较的 data.tables。
但不知道为什么会有警告
DT1 <- data.table(ID=c("F","A","E","B","C","D","C"),
num=c(59,3,108,11,22,54,241),
value=c(90,47,189,38,42,86,280),
Mark=c("Mary","Tom","Abner","Norman","Joanne",
"Bonnie","Trista"))
DT2 <- data.table(Mark=c("Mary","Abner","Bonnie","Trista","Norman"),
numA=c(48,20,88,237,20),
numB=c(60,326,54,268,89),
valueA=c(78,34,78,270,59),
valueB=c(90,190,90,385,75))
DToutput <- DT1[(num > DT2$numA & num < DT2$numB &
value > DT2$valueA & value < DT2$valueB)]
我的目标:
我想根据DT1中的Mark来找到num和value,而numA和numB在DT2中有一个范围。
例如:
对于DT1、num = 59 和value = 90 以及Mark = "Mary" 中的行F。所以,在使用by=Mary时,还必须匹配:
num(59) > DT2$numA(48) & num(59) < DT2$numB(60) & value(90) > DT2$valueA(78) & value(90) < DT2$valueB(90)
你可以看到90 < 90不成立,所以我的结果不会有行F
我收到了这个警告:
Warning messages:
1: In num > DT2$numA : longer object length is not a multiple of shorter object lengt
2: In num < DT2$numB : longer object length is not a multiple of shorter object lengt
3: In value > DT2$valueA : longer object length is not a multiple of shorter object lengt
4: In value < DT2$valueB : longer object length is not a multiple of shorter object lengt
如何修改它以完成我想做的事情?
谢谢
补充:DT2中可以使用多个相同的Marks,但取值范围不同。这会影响比较吗?
【问题讨论】:
标签: r data.table