我想基于由两个不同列(Participation_type
和custID
)标识的公共行来更新列accntID
(五个不同的值)。我也有超过130000条记录,其中包含custID
和accntID
的大约7000种不同组合。我在考虑是否可以使用五个参与类型值之一的随机抽样来填充此变量。但不确定如何。
**对于custID
和accntID
的组合也没有可见的模式(例如重复custID
和accntID
的值组合)。因此,我相信矢量化将无法正常工作。
样本数据:
library(data.table)
df <- data.table(custID = rep(c("a", "b"), times = 2),
accntID = rep(c(4, 7), times = 2),
Batch_ID = c(1, 1, 2, 2),
Participation_type = character(4))
custID accntID Batch_ID
a 4 1
b 7 1
c 8 1
b 7 2
a 4 2
d 4 1
最终数据:输出应如下所述。
custID accntID Batch_ID Participation_type
a 4 1 BEN
b 7 1 AC
c 8 1 RC
b 7 2 AC
a 4 2 BEN
d 4 1 BEN
非常感谢您的建议和帮助。
答案 0 :(得分:0)
我们创建键/值数据集,然后与原始数据集结合以创建“ Participation_type”
基于“ custID”,“ accntID”和“ Participation_type”的可能值的唯一组合创建键/值数据集
library(data.table)
keyvalDat <- data.table(custID = c('a', 'b', 'c', 'd', 'e'),
accntID = c(4, 7, 8, 9, 10),
Participation_type = c("BEN", "AC", "RC", "O", "A"))
然后加入原始数据集
df[keyvalDat, Participation_type := Participation_type, on = .(custID, accntID)]
df
# custID accntID Batch_ID Participation_type
#1: a 4 1 BEN
#2: b 7 1 AC
#3: c 8 1 RC
#4: a 4 2 BEN
#5: b 7 2 AC
df <- data.table(custID = c('a', 'b', 'c', 'a', 'b'),
accntID = c(4, 7, 8, 4, 7), Batch_ID = rep(1:2, c(3, 2)))
v1 <- c("BEN", "AC", "RC")