将_rows绑定到每组tibble

Cet*_*ttt 4 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)
Run Code Online (Sandbox Code Playgroud)

因此ab具有相同的列,并且b有一个名为 id 的附加列。我想要执行以下操作:分组bid然后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
Run Code Online (Sandbox Code Playgroud)

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

谢谢

www*_*www 5

a我们可以使用idfrom扩展数据框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
Run Code Online (Sandbox Code Playgroud)