我有一个历史表(表格:HT),其中包含以下结构中的购买信息
Supplierno itemno 价格
ABC123 101 50
ABC124 105 55
BCD201 103 60
BCD211 103 60
EFG103 103 45
然后我定期以相同的格式(表:NT)获取新数据。我想确定新数据Feed中的案例,供应商以价格提供相同的商品。我想要相当于一个 将执行
的SQL查询从newtable中选择NT。*,其中NNT.itemno = HT.itemno和NT.price<> 1.2 * HT.price
我试过HT [HT [(HT.itemno == NT.itemno)& (HT.price!= NT.price)]但总是得到0结果,即使有些实例应该被拿起。
以某种方式比较一行中的列可以很好地处理这种方法,但不是跨行的列相同
我知道我可以运行循环,但我的HT表很大(> 1M)并且理解思维向量会更有效。
期待投入和指导
答案 0 :(得分:2)
使用data.table你也可以尝试:(重用@ Wave' s例子)
library(data.table)
HT=data.table(supplier=c("ABC123","ABC124","BCD201"),itemno=101:103,price=c(50,55,60))
NT=data.table(supplier=c("ABC123","ABC124","BCD201"),itemno=101:103,price=c(50,55,65))
merge(HT,NT,by=c("itemno","supplier"))[price.x!=price.y]
答案 1 :(得分:0)
要重新创建数据:
HT=data.frame(supplier=c("ABC123","ABC124","BCD201"),itemno=101:103,price=c(50,55,60))
NT=data.frame(supplier=c("ABC123","ABC124","BCD201"),itemno=101:103,price=c(50,55,65))
从新数据框中选择价格变动的情况:
NT[NT$itemno %in% HT$itemno & NT$price!=HT$price,]