将行添加到 tibble 数据框,以便每组具有相同数量的观察
Add rows to a tibble dataframe so that each group has the same number of observation
我的数据是这样的(按列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
组,我只有 id
1 和 2 的行;对于 c
组,我只有 1 行 id
1。我理想的数据框看起来像这样
# 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
我的数据是这样的(按列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
组,我只有 id
1 和 2 的行;对于 c
组,我只有 1 行 id
1。我理想的数据框看起来像这样
# 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