【发布时间】:2018-04-06 14:03:52
【问题描述】:
varA=c('2018-01-03', '2018-01-25','2018-01-15','2018-01-06')
varB=c('2018-01-02', '2018-01-05', '2018-01-13', '2018-01-21', '2018-01-26')
varC=c(201801,201802,201804,201809,201815)
df1=as.data.frame(varA)
df2=as.data.frame(cbind(varB,varC))
使用上面的代码获取数据帧:
varA
1 2018-01-03
2 2018-01-25
3 2018-01-15
4 2018-01-06
和
varB varC
1 2018-01-02 201801
2 2018-01-05 201802
3 2018-01-13 201804
4 2018-01-21 201809
5 2018-01-26 201815
由此我想将 df1 和 df2 合并在一起,但如果 varA 作为日期介于 varB 的两个日期之间,它将从最早的日期开始使用 varC。我认为展示我期望的结果会更容易:
varA varB varC
1 2018-01-03 2018-01-02 201801
2 2018-01-25 2018-01-21 201809
3 2018-01-15 2018-01-13 201804
4 2018-01-06 2018-01-05 201802
希望这很清楚。我不确定如何获得所需的输出。
【问题讨论】:
-
您有什么尝试吗?你试过了吗?
-
我不知道从哪里开始,我习惯于直接合并。这就是我想在这里发帖的原因。
-
第一步是创建一个函数,它关联一个
varA值,正确的varB值(最早等...)。然后您可以使用for/apply为 DF1 的每一行使用此功能。然后你可以使用merge。 -
@timat 我真的不知道该怎么做,所以如果你能创建一个例子会很棒吗?这个问题只有我数据的一小部分,因为我的实际数据有 5000 行。这些行有 100 多个不同的日期。
标签: r merge conditional