R-在某些条件下比较矩阵中的行

时间:2015-01-30 10:52:40

标签: r loops matrix

我有一个历史表(表格: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)并且理解思维向量会更有效。

期待投入和指导

2 个答案:

答案 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,]
相关问题