假设我有一个包含多个观察值的数据集。有时,一个观察实际上就是多个观察,已经被浓缩为一个观察。为了跟踪合并了多少个观测值,存在一个整数值变量。
我想做的就是逆转这一过程。
示例代码:
library(tidyverse)
# Example tibble
df_ex <- tibble(
var1 = seq(1, 3),
var2 = c('Some', 'Random', 'Text'),
var3 = c(1, 3, 2)
)
上面的代码产生以下提示:
# A tibble: 3 x 3
var1 var2 var3
<int> <chr> <dbl>
1 1 Some 1
2 2 Random 3
3 3 Text 2
在进行一些整洁的魔术之后,所需的小球将是:
# A tibble: 6 x 3
var1 var2 var3
<dbl> <chr> <dbl>
1 1 Some 1
2 2 Random 1
3 2 Random 1
4 2 Random 1
5 3 Text 1
6 3 Text 1
答案 0 :(得分:1)
tidyverse
1)通过'var1'进行分组(假设它是唯一的),为'var3'创建一个list
列,方法是将1复制为'var3'的值,然后unnest
df_ex %>%
group_by(var1) %>%
mutate(var3 = list(rep(1, var3))) %>%
unnest
2)使用map
获取“ var3”和list
unnest
列
df_ex %>%
mutate(var3 = map(var3, ~ rep(1, .x))) %>%
unnest
3)使用base R
,复制行序列以扩展数据,然后将“ var3” transform
复制为1
transform(df_ex[rep(seq_len(nrow(df_ex)), df_ex$var3),], var3 = 1)