【发布时间】:2018-06-08 16:15:34
【问题描述】:
我在 R 中对此进行了一些尝试,但还没有找到可行/优雅的解决方案。
我正在尝试替换 df_1 中的值
df_1
Year Event Loss Control
1 5 2000003 78652058 180
2 5 2000013 130063819 251
3 7 2000023 299725787 266
4 8 2000033 2916285664 160
5 6 2000333 3254545464 162
在 df_2 中具有适当的值
df_2
Year Event_1 Loss1 Event_2 Loss2
1 5 2000003 35318435.6 2000013 323380
3 7 2000023 7152099.6 0 0
4 8 2000033 985406.7 0 0
我需要将 df_2 中的“Event_1”与 df_1 中的“Event”匹配为“Year”,并将 df_1 中的“Loss”替换为 df_2 中的“Loss1”。 'Event_2' 和 'Loss2' 也需要这样做。 df_2 的每个“年份”中的“Event_1”和“Event_2”将始终是唯一的,并且始终包含在 df_1 中。如果“Event_1”或“Event_2”为 0,则不应发生替换。 df_1 中将存在 df_2 中不包含的“年份”和“事件”的实例。
更新
输出应该如下:
Year Event Loss Control
1 5 2000003 35318435.6 180
2 5 2000013 323380 251
3 7 2000023 7152099.6 266
4 8 2000033 985406.7 160
5 6 2000333 3254545464 162
df_1 第 1 行中的“Loss”被 df_2 第 1 行中的“Loss1”替换为 df_1$Event[1] = df_2$Event_1[1] AND df_1$Year[1] = df_2$Year[1] . df_1$Loss[2] 被 df_2$Loss2[1] 替换为 df_1$Event[2] = df_2$Event2[1] AND df_1$Year[2] = df_1$Year[1]。 df_2$Year 在每一行中都是唯一的。一行中的 df_2$Event_1 和 df_2$Event_2 永远不会是相同的值。
【问题讨论】:
-
能否请您为示例数据添加您的预期输出?
-
df1 中有两个 Year=5 条目,因此根据年份请求替换到 df1 是不明确的。我想有人可能会猜测替换应该是按顺序进行的,但是我们不能保证一年内 df2 行中的项目数不会超过 df1 中的行数。看起来正确的方法可能是将 df2 重塑为长格式,将 Year 和 Event 作为联合“时间”变量,然后联合匹配 Year 和 Event。
-
你的输出应该是什么?