【发布时间】:2019-07-29 05:48:57
【问题描述】:
我正在尝试使用 dplyr 连接 R 中的两个表,方式如下:
表 1:
ID CHAR1 CHAR2
01 xyz abc
02 abc xyz
等等……
表 2:
ID YEAR VALUE1 STATUS
01 2012 455 T
01 2013 14 B
01 2014 234 C
01 2015 17 T
02 2014 213 B
02 2015 456 B
02 2016 17 B
我有一个名为 MODEL_YEAR 的单独变量,在本例中设置为 2015。
我希望我的新表如下所示:
ID CHAR1 CHAR2 VALUE_Tminus1 VALUE_Tminus2 STATUS_Tminus1 STATUS_Tminus2
01 xyz abc 234 14 C B
02 abc xyz 213 NA B NA
新列会从 MODEL_YEAR 回溯。例如,VALUE_Tminus1 取 2014 年的 VALUE1。我希望新表可以追溯到 10 年前,在没有可用数据的情况下出现 NA。
到目前为止,我已尝试将 MODEL_YEAR 作为列添加到表 1 中,然后将表 1 左连接到表 2,如下所示:
left_join(Table_1, Table_2, by=c("ID"="ID", "MODEL_YEAR"=("YEAR"-1))
但这不起作用,因为我不能以这种方式从“YEAR”中减去 1。我想我可以通过添加大量新列并进行多次连接来做到这一点,但我不确定并想知道是否有更简洁的方法?也许使用 data.table - 我知道这可以用于连接,但我不熟悉它。
非常感谢
【问题讨论】:
标签: r dplyr data.table left-join