根据另一个 df 的值将组添加到一个 df

时间:2021-01-18 13:03:51

标签: r dplyr

我有两个 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?我正在尝试具有“滞后”和“哪个”功能的东西,但实际上没有可显示的效果。

0 个答案:

没有答案