当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dtplyr complete.dtplyr_step 完成缺少数据组合的 DataFrame


这是 tidyr complete() 泛型的方法。这是 expand()full_join()replace_na()dtplyr 翻译的包装器,对于完成缺失的数据组合非常有用。

用法

# S3 method for dtplyr_step
complete(data, ..., fill = list())

参数

data

一个lazy_dt()

...

< data-masking > 要扩展或完成的列规范。列可以是原子向量或列表。

  • 要查找 xyz 的所有唯一组合(包括数据中不存在的组合),请将每个变量作为单独的参数提供: 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:2020year = 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/complete.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Complete a data frame with missing combinations of data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。