我对编程很陌生,在一个简单的问题中,我正在努力解决数据集的规模问题。我正在尝试合并两个数据集,一个包含所有外发邮件及其发件人(由“邮件ID”索引),另一个包含所有传入邮件及其收件人(由“收据ID”索引)。
邮件通常会发送给多个收件人,这就是数据集中存在差异的原因,但它是详尽无遗的(传出数据集中的每个发送邮件都可以作为传入数据集中的一个或多个条目找到),以及收件人数据集中的所有邮件都列出了相应的“邮件ID”。
我要做的就是在传入数据集中添加一个条目,指示该传入电子邮件的发件人。然后,我将能够构建任意两个人之间的电子邮件流量矩阵。
原则上它应该是直截了当的。感兴趣的数据集是'recipientinfo'(列出传入消息)和'messages'(列出传出消息)。后者按'mid'排序(消息ID)。
merged<-data.table(recipientinfo,Sender=NA) #appending a dummy column to the recipient dataset to be filled in
m<-nrow(merged)
for (i in 1:m){
t<-merged[i,mid] #find the message id (mid) for an incoming message
merged[i,"Sender"]<-as.character(message[t,"sender"]) #slot in the sender entry from the corresponding row in outgoing messages
}
但是,数据集非常大(大约有200万条传入消息,对应于~250k的唯一传出消息)。很明显,循环是完全不可行的。
有人可以指出我正确的方向来处理这类问题吗?