我有两个 df:
df_1 <-
tribble(
~time, ~v1, ~v2,
-3, 213, 1,
-2, 124, 4,
-1, 532, 2,
0, 423, 5,
-3, 123, 3,
-2, 523, 2,
-1, 125, 5,
0, 515, 2,
-3, 321, 5
)
df_2 <-
tribble(
~trial, ~v4,
2, 12,
4, 23,
5, 34,
6, 53
)
df_1 的“时间”的值在不同点重置为 -3。下一次重置之前的所有行都属于在 df_2 的“试用”列中定义的组。也就是说,两次重置之间的 df_1 行属于在 df_2 的单个行中定义的组。我想使用 df_2 中的值并将其粘贴到所有相应的 df_1 行中。 df_1 中的重置次数与 df_2 中的行数相匹配。
我的目标 df 看起来像这样:
df_final <-
tribble(
~time, ~v1, ~v2, ~trial,
-3, 213, 1, 2,
-2, 124, 4, 2,
-1, 532, 2, 2,
0, 423, 5, 2,
-3, 123, 3, 4,
-2, 523, 2, 4,
-1, 125, 5, 4,
0, 515, 2, 4,
-3, 321, 5, 5
)
请注意,'Trial' 不仅仅是一个枚举:在这个例子中它从 2 跳转到 4。这对于左/右连接很容易,但在这种情况下没有通用键。我有一个大致的想法,如何使用 for 循环和 if 来做这样的事情,但是由于我的 df 很大,这不是最佳选择。关于更典型的 R 解决方案的任何想法 - 最好,但不一定使用 dplyr?我正在尝试具有“滞后”和“哪个”功能的东西,但实际上没有可显示的效果。