对complete和expand有新的理解
准备包和数据
if(!require(tidyr))install.packages("tidyr")
library(tidyr)
df <- data.frame(
group = c(1:2, 1),
item_id = c(1:2, 5),
item_name = c("a", "a", "b"),
value1 = 2:4,
value2 = 4:6
)
测试函数
complete(df,group,nesting(item_id,item_name))
## # A tibble: 6 x 5
## group item_id item_name value1 value2
## <dbl> <dbl> <fct> <int> <int>
## 1 1 1 a 2 4
## 2 1 2 a NA NA
## 3 1 5 b 4 6
## 4 2 1 a NA NA
## 5 2 2 a 3 5
## 6 2 5 b NA NA
nesting括号内的列名不参与扩展,但是可以跟随重复,未列在代码中的列扩展出的行成为NA
b=complete(df,group,item_id,item_name)[1:3]
a=expand(df,group,item_id,item_name)
identical(a,b)
## [1] TRUE