r - 根据来自另一个 df 的值将组添加到一个 df
问题描述
我有两个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?我正在尝试具有“滞后”和“哪个”功能的东西,但实际上没有明显的效果。
解决方案
推荐阅读
- github - GitHub - 无法将项目添加到存储库(用户名或密码无效)
- javascript - 在 Javascript 中,为什么我能够打印 forEach 的值但不能返回值?
- rust - 嵌套结构:“借来的值不够长”
- python - Python PyQt5 从另一个 Py-File 添加列表项
- ios - 如何使用 SwiftUI 在 iOS 中将表情符号与文本垂直对齐?
- javascript - js根据数值改变表格中数字的颜色
- c# - 如何将字符串行转换为类
- spf - DMARC 汇总报告:不匹配域的对齐检查通过
- google-sheets - 在不丢失 Google 表格中的第一个文件夹的情况下修剪 URL 的文件夹路径
- apache-spark - Spark 更改列类型失败