【发布时间】:2020-11-16 21:48:06
【问题描述】:
我的问题很简单。我有 2 个数据框,每个数据框都有一列日期(%Y-%m-%d)和一列 ID。一个每行只有一个 id,另一个有多个相同 id 的行。我想取值,以便它显示日期的最小差异。现在我用一个例子更好地解释:
df1(colA 的单个值):
+-------+------------+------+------+-------+-------+
| colA | colB | colC | colD | colE | colF |
+-------+------------+------+------+-------+-------+
| 3000 | 2011-01-20 | 2 | 3.43 | 2.01 | 1.63 |
| 3001 | 2012-04-06 | 1 | 1.12 | -0.63 | -1.16 |
| 3002 | 2012-04-24 | 2 | 2.28 | -0.18 | -0.12 |
| 3003 | 2012-04-13 | 2 | 1.27 | -0.51 | -0.82 |
| 3004 | 2011-08-24 | 5 | 5.30 | 2.68 | 2.10 |
| 3006 | 2011-08-02 | 2 | 2.12 | -0.27 | -2.60 |
+-------+------------+------+------+-------+-------+
df2(第一列 (X) 的多个值):
+------+---------------+----------+
| colX | colY | colZ |
+------+---------------+----------+
| 3000 | 2011-02-01 | 0 |
| 3000 | 2012-03-01 | 0 |
| 3000 | 2013-02-01 | 0 |
| 3000 | 2014-03-01 | 1 |
| 3000 | 2015-03-01 | 0 |
| 3000 | 2016-04-01 | 0 |
| 3002 | 2011-03-01 | 1 |
| 3002 | 2011-08-01 | 1 |
| 3002 | 2012-04-01 | 0 |
+------+---------------+----------+
在这种情况下,我看到 colA (df1) 中的第一个值,并计算 2011-01-20 与 df2 中 3000 的所有日期之间的所有月份差异(2011-02-01、2012-03-01 ,ecc),所以前 6 行。我只取最小的差异,所以在这种情况下是第一个(2011-02-01),差不多一个月。所以最后我应该让 df1 有 3 个新列(Y 和 Z 以及 diff),所以 df2 上的最小日期、Z 的 0/1 以及 2 个日期的天数之差。
例如为 3000(差额我取 abs):
3000 2011-01-20 2 3.43 2.01 1.63 2011-02-01 0 12
我应该使用什么功能?申请? ddply?
提前致谢
【问题讨论】:
标签: r dataframe date apply plyr