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