r - bind_rows 到每组 tibble

标签 r tidyverse tibble

考虑以下两个小标题:

library(tidyverse)
a <- tibble(time = c(-1, 0), value = c(100, 200))
b <- tibble(id = rep(letters[1:2], each = 3), time = rep(1:3, 2), value = 1:6)

所以ab具有相同的列和 b有一个名为 id 的附加列。
我想做以下事情:组b来自 id然后添加小标题 a在每个组的顶部。
所以输出应该是这样的:
# A tibble: 10 x 3
   id     time value
   <chr> <int> <int>
 1 a        -1     100
 2 a         0     200
 3 a         1     1
 4 a         2     2
 5 a         3     3
 6 b        -1     100
 7 b         0     200
 8 b         1     4
 9 b         2     5
10 b         3     6

当然,有多种解决方法可以实现这一点(例如循环)。但就我而言,我有大量 ID 和大量列。
如果有人能指出我在 tidyverse 中的解决方案的方向,我将不胜感激。

谢谢

最佳答案

我们可以展开数据框aid来自 b然后 bind_rows他们在一起。

library(tidyverse)

a2 <- expand(a, id = b$id, nesting(time, value))
b2 <- bind_rows(a2, b) %>% arrange(id, time)
b2
# # A tibble: 10 x 3
#    id     time value
#    <chr> <dbl> <dbl>
#  1 a        -1   100
#  2 a         0   200
#  3 a         1     1
#  4 a         2     2
#  5 a         3     3
#  6 b        -1   100
#  7 b         0   200
#  8 b         1     4
#  9 b         2     5
# 10 b         3     6

关于r - bind_rows 到每组 tibble,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286239/

相关文章:

r - 如何从 R 中的多个 id 中获取独占和总计数

r - 解析每一行中的字符串并将结果扩展为整洁的数据框

r - 如何更改嵌套数据框的 colname

R:tibble 将列移动到行并命名列

根据相邻列的值替换多列的值

r - 为论文存档 R 文件的最佳方法

r - 使用seed=NA 时,如何找出 MICE R 包选择哪个种子进行多重插补?

R round() 0.5 规则

r - 强制 geom_bar 在任何情况下都不干扰 x 排序?

r - 如何在 tibbles 上取消对 which.min 的破坏