r语言 - 将行添加到标题数据框架中,以便每个组具有相同数量的观察值



我的数据是这样的(它是按列group分组的)

df = data.frame(id=c('1','2','3','1','2','1'),group=c('a','a','a','b','b','c'),
value1=c(1,2,3,4,5,6),value2=c(1,2,3,4,5,6),stringsAsFactors=FALSE)
df = group_by(df,group)
df
# A tibble: 6 x 4
# Groups:   group [3]
id    group value1 value2
<chr> <chr>  <dbl>  <dbl>
1 1     a          1      1
2 2     a          2      2
3 3     a          3      3
4 1     b          4      4
5 2     b          5      5
6 1     c          6      6

id可以取1,2,3中的值。我想做的是,对于每个group,我想为每个id做一行。现在对于组b我只有id1和2的行;对于组c,我只有1行id1。我理想的数据框架是这样的

# A tibble: 9 x 4
# Groups:   group [3]
id    group value1 value2
<chr> <chr>  <dbl>  <dbl>
1 1     a          1      1
2 2     a          2      2
3 3     a          3      3
4 1     b          4      4
5 2     b          5      5
6 3     b         NA     NA
7 1     c          6      6
8 2     c         NA     NA
9 3     c         NA     NA

有什么方法可以有效地做到这一点吗?

我们可以使用complete扩展数据,然后使用arrange

library(dplyr)
library(tidyr)
df %>% 
ungroup %>%
complete(id, group) %>%
arrange(group)

与产出

# A tibble: 9 x 4
#  id    group value1 value2
#  <chr> <chr>  <dbl>  <dbl>
#1 1     a          1      1
#2 2     a          2      2
#3 3     a          3      3
#4 1     b          4      4
#5 2     b          5      5
#6 3     b         NA     NA
#7 1     c          6      6
#8 2     c         NA     NA
#9 3     c         NA     NA

最新更新