【发布时间】:2021-10-17 11:07:06
【问题描述】:
我现在正在努力寻找一种方法来匹配 R 中两个不同的表(行号不平衡)与匹配的日期范围。
第一个数据框表示某人已声明的内容,第二个数据框表示实际情况。问题是一个 id 说 A 可能在他/她的存储空间中保存了一周或更长时间的公斤数产品然后一周后出现。
所以我有两个不同行的数据框。两个行数都超过 500.000。第一个有 500.000,第二个有 520.000。(因此可能会出现一些 NA,但这没关系)。
我想从这 2 个不同的数据帧中查找和匹配:
- id 相同,
- 产品代码和人代码要一致,并且
- 检查第二个数据框中的日期是否在第一个数据框中的日期一个月的范围内(例如他/她在2020/1/1申报体重(100公斤)并出现2020/1/15,但实际重量为105)。
如果所有这些条件都为真,则将两个权重相加(来自数据帧 1 和 2)
所需的输出必须是具有匹配 id、日期范围、product、man、2 列权重的数据框,最后一列是权重总和的值。
示例数据框是以下 R 中的两个数据框:
id = rep("A",10)
date = seq(as.Date("2000/1/1"), by = "day", length.out = 10)
product = c("E1","E1","E2","E3","E3","E4","E1","E1","E5","E5")
man = c("PS","PS","PS","DDR","DDR","FFR","PS","PS","BA","BA")
weight = c(1505,300,259,231,140,150,300,112,203,2200)
data1 = data.frame(id,date,product,man,weight);data1
id2 = rep("A",10)
date2 = sample(seq(as.Date("2000/1/10"), by = "day", length.out = 10),10)
product2 = c("E3","E3","E1","E1","E1","E1","E5","E4","E5","E2")
man2 = c("DDR","DDR","PS","PS","PS","PS","BA","FFR","BA","PS")
weight2 = c(259,295,260,240,135,145,250,110,2000,210)
data2 = data.frame(id2,date2,product2,man2,weight2);data2
如何将它们与轧花日期延迟条件相匹配?
有什么帮助吗?
【问题讨论】:
标签: r dataframe date if-statement join