這是 tidyr fill()
泛型的方法。它被翻譯為 data.table::nafill()
。請注意,data.table::nafill()
目前僅適用於整數和雙列。
參數
- data
-
一個 DataFrame 。
- ...
-
<
tidy-select
> 要填充的列。 - .direction
-
填充缺失值的方向。目前是"down"(默認)、"up"、"downup"(即先向下然後向上)或"updown"(先向上然後向下)。
例子
library(tidyr)
# Value (year) is recorded only when it changes
sales <- lazy_dt(tibble::tribble(
~quarter, ~year, ~sales,
"Q1", 2000, 66013,
"Q2", NA, 69182,
"Q3", NA, 53175,
"Q4", NA, 21001,
"Q1", 2001, 46036,
"Q2", NA, 58842,
"Q3", NA, 44568,
"Q4", NA, 50197,
"Q1", 2002, 39113,
"Q2", NA, 41668,
"Q3", NA, 30144,
"Q4", NA, 52897,
"Q1", 2004, 32129,
"Q2", NA, 67686,
"Q3", NA, 31768,
"Q4", NA, 49094
))
# `fill()` defaults to replacing missing data from top to bottom
sales %>% fill(year)
#> Source: local data table [16 x 3]
#> Call: copy(`_DT10`)[, `:=`(year = nafill(year, "locf"))]
#>
#> quarter year sales
#> <chr> <dbl> <dbl>
#> 1 Q1 2000 66013
#> 2 Q2 2000 69182
#> 3 Q3 2000 53175
#> 4 Q4 2000 21001
#> 5 Q1 2001 46036
#> 6 Q2 2001 58842
#> # … with 10 more rows
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
# Value (n_squirrels) is missing above and below within a group
squirrels <- lazy_dt(tibble::tribble(
~group, ~name, ~role, ~n_squirrels,
1, "Sam", "Observer", NA,
1, "Mara", "Scorekeeper", 8,
1, "Jesse", "Observer", NA,
1, "Tom", "Observer", NA,
2, "Mike", "Observer", NA,
2, "Rachael", "Observer", NA,
2, "Sydekea", "Scorekeeper", 14,
2, "Gabriela", "Observer", NA,
3, "Derrick", "Observer", NA,
3, "Kara", "Scorekeeper", 9,
3, "Emily", "Observer", NA,
3, "Danielle", "Observer", NA
))
# The values are inconsistently missing by position within the group
# Use .direction = "downup" to fill missing values in both directions
squirrels %>%
dplyr::group_by(group) %>%
fill(n_squirrels, .direction = "downup") %>%
dplyr::ungroup()
#> Source: local data table [12 x 4]
#> Call: copy(`_DT12`)[, `:=`(n_squirrels = nafill(nafill(n_squirrels,
#> "locf"), "nocb")), by = .(group)]
#>
#> group name role n_squirrels
#> <dbl> <chr> <chr> <dbl>
#> 1 1 Sam Observer 8
#> 2 1 Mara Scorekeeper 8
#> 3 1 Jesse Observer 8
#> 4 1 Tom Observer 8
#> 5 2 Mike Observer 14
#> 6 2 Rachael Observer 14
#> # … with 6 more rows
#>
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results
# Using `.direction = "updown"` accomplishes the same goal in this example
相關用法
- R dtplyr filter.dtplyr_step 使用列值對行進行子集化
- 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 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 count.dtplyr_step 按組計數觀察值
- R dtplyr select.dtplyr_step 使用名稱對列進行子集化
- R dtplyr drop_na.dtplyr_step 刪除包含缺失值的行
- R dtplyr complete.dtplyr_step 完成缺少數據組合的 DataFrame
- R dtplyr collect.dtplyr_step 強製計算惰性 data.table
- R dtplyr arrange.dtplyr_step 按列值排列行
- R dtplyr separate.dtplyr_step 使用正則表達式或數字位置將字符列分成多列
- R dtplyr rename.dtplyr_step 使用名稱重命名列
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Fill in missing values with previous or next value。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。