这是 tidyr complete()
泛型的方法。这是 expand()
、 full_join()
和 replace_na()
的 dtplyr
翻译的包装器,对于完成缺失的数据组合非常有用。
参数
- data
-
一个
lazy_dt()
。 - ...
-
<
data-masking
> 要扩展或完成的列规范。列可以是原子向量或列表。-
要查找
x
、y
和z
的所有唯一组合(包括数据中不存在的组合),请将每个变量作为单独的参数提供:expand(df, x, y, z)
或complete(df, x, y, z)
。 -
要仅查找数据中出现的组合,请使用
nesting
:expand(df, nesting(x, y, z))
。 -
您可以将这两种形式结合起来。例如,
expand(df, nesting(school_id, student_id), date)
将为所有可能日期的每个当前 school-student 组合生成一行。
与因子一起使用时,
expand()
和complete()
使用完整的级别集,而不仅仅是数据中出现的级别。如果您只想使用数据中看到的值,请使用forcats::fct_drop()
。与连续变量一起使用时,您可能需要填充数据中未出现的值:为此,请使用
year = 2010:2020
或year = full_seq(year,1)
等表达式。 -
- fill
-
一个命名列表,为每个变量提供一个值,以代替
NA
来缺少组合。
例子
library(tidyr)
tbl <- tibble(x = 1:2, y = 1:2, z = 3:4)
dt <- lazy_dt(tbl)
dt %>%
complete(x, y)
#> Source: local data table [4 x 3]
#> Call: merge(`_DT5`[, CJ(x = x, y = y, unique = TRUE)], `_DT5`, all = TRUE,
#> by.x = c("x", "y"), by.y = c("x", "y"), allow.cartesian = TRUE)
#>
#> x y z
#> <int> <int> <int>
#> 1 1 1 3
#> 2 1 2 NA
#> 3 2 1 NA
#> 4 2 2 4
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
dt %>%
complete(x, y, fill = list(z = 10L))
#> Source: local data table [4 x 3]
#> Call: merge(`_DT5`[, CJ(x = x, y = y, unique = TRUE)], `_DT5`, all = TRUE,
#> by.x = c("x", "y"), by.y = c("x", "y"), allow.cartesian = TRUE)[,
#> `:=`(z = fcoalesce(z, 10L))]
#>
#> x y z
#> <int> <int> <int>
#> 1 1 1 3
#> 2 1 2 10
#> 3 2 1 10
#> 4 2 2 4
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
相关用法
- R dtplyr count.dtplyr_step 按组计数观察值
- R dtplyr collect.dtplyr_step 强制计算惰性 data.table
- R dtplyr lazy_dt 创建一个“惰性”data.table 以与 dplyr 动词一起使用
- R dtplyr group_modify.dtplyr_step 对每个组应用一个函数
- R dtplyr transmute.dtplyr_step 创建新列,删除旧列
- R dtplyr slice.dtplyr_step 使用行的位置对行进行子集化
- R dtplyr left_join.dtplyr_step 连接数据表
- R dtplyr fill.dtplyr_step 用上一个或下一个值填充缺失值
- R dtplyr filter.dtplyr_step 使用列值对行进行子集化
- R dtplyr mutate.dtplyr_step 创建和修改列
- R dtplyr distinct.dtplyr_step 子集不同/唯一行
- R dtplyr unite.dtplyr_step 通过将字符串粘贴在一起将多列合并为一列。
- R dtplyr nest.dtplyr_step 巢
- R dtplyr relocate.dtplyr_step 使用变量名称重新定位变量
- R dtplyr head.dtplyr_step 对第一行或最后一行进行子集化
- R dtplyr expand.dtplyr_step 扩展 DataFrame 以包含所有可能的值组合。
- R dtplyr group_by.dtplyr_step 分组和取消分组
- R dtplyr intersect.dtplyr_step 设置操作
- R dtplyr pivot_wider.dtplyr_step 将数据从长轴转向宽轴
- R dtplyr summarise.dtplyr_step 将每组汇总为一行
- R dtplyr select.dtplyr_step 使用名称对列进行子集化
- R dtplyr drop_na.dtplyr_step 删除包含缺失值的行
- R dtplyr arrange.dtplyr_step 按列值排列行
- R dtplyr separate.dtplyr_step 使用正则表达式或数字位置将字符列分成多列
- R dtplyr rename.dtplyr_step 使用名称重命名列
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Complete a data frame with missing combinations of data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。