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)
因此a和b具有相同的列,并且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
Run Code Online (Sandbox Code Playgroud)
当然,有多种解决方法可以实现此目的(例如循环)。但就我而言,我有大量的 ID 和大量的列。如果有人能指出我在 tidyverse 中找到解决方案的方向,我将不胜感激。
谢谢
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)