當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。