考虑以下两个小标题:
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)
所以
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
当然,有多种解决方法可以实现这一点(例如循环)。但就我而言,我有大量 ID 和大量列。
如果有人能指出我在 tidyverse 中的解决方案的方向,我将不胜感激。
谢谢
最佳答案
我们可以展开数据框a
与 id
来自 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/