[英]keep a column when expanding dataframe to fill using tidyr::complete
[英]How to use the tidyr complete and fill functions to extend a column of NA's in R dataframe?
我正在使用 tidyr complete()
和fill()
函數來擴展(向下復制)dataframe,因此所有 ID 元素都具有相同的行數。 底部發布的代碼正確擴展了所有字段,但 dataframe 的“Bal2”列除外,其中應擴展一系列 NA。 有關如何糾正此問題的任何建議?
NA 值確實在部署的更完整的代碼中用於計算目的。另請注意,我有另一個代碼片段可以正確擴展“Period_2”列,因此我不需要有關“Period_2”的幫助。 為了代碼簡潔,它被省略了。
下面說明了生成testDF
和testDF1
數據幀時的問題:
代碼:
library(dplyr)
library(tidyr)
testDF <-
data.frame(
ID = c(rep(1,5),rep(50,3),rep(60,3)),
Period_1 = c(1:5,1:3,1:3),
Period_2 = c("2012-06","2012-07","2012-08","2012-09","2012-10","2013-06","2013-07","2013-08","2012-10","2012-11","2012-12"),
Bal1 = c(rep(10,5),21:23,36:34),
Bal2 = c(rep(12,8),rep(NA,3))
)
testDF1 <- testDF %>%
tidyr::complete(ID, nesting(Period_1)) %>%
tidyr::fill(Bal1, Bal2, .direction = "down")
testDF1 <- as.data.frame(testDF1)
如評論中所述,按ID
分組,這應該得到解決:
library(dplyr)
# library(tidyr)
testDF %>%
tidyr::complete(ID, tidyr::nesting(Period_1)) %>%
group_by(ID) %>%
tidyr::fill(Bal1, Bal2, .direction = "down") %>%
ungroup()
# # A tibble: 15 x 5
# ID Period_1 Period_2 Bal1 Bal2
# <dbl> <int> <chr> <dbl> <dbl>
# 1 1 1 2012-06 10 12
# 2 1 2 2012-07 10 12
# 3 1 3 2012-08 10 12
# 4 1 4 2012-09 10 12
# 5 1 5 2012-10 10 12
# 6 50 1 2013-06 21 12
# 7 50 2 2013-07 22 12
# 8 50 3 2013-08 23 12
# 9 50 4 NA 23 12
# 10 50 5 NA 23 12
# 11 60 1 2012-10 36 NA
# 12 60 2 2012-11 35 NA
# 13 60 3 2012-12 34 NA
# 14 60 4 NA 34 NA
# 15 60 5 NA 34 NA
在fill()
dplry::group_by()
) :
require(dplyr)
#> Loading required package: dplyr
require(tidyr)
#> Loading required package: tidyr
test <- tribble(
~id, ~value,
"A", 80,
"A", NA,
"A", NA,
"B", NA,
"B", NA
)
fill(test, value)
#> # A tibble: 5 × 2
#> id value
#> <chr> <dbl>
#> 1 A 80
#> 2 A 80
#> 3 A 80
#> 4 B 80
#> 5 B 80
test <- group_by(test, id)
fill(test, value)
#> # A tibble: 5 × 2
#> # Groups: id [2]
#> id value
#> <chr> <dbl>
#> 1 A 80
#> 2 A 80
#> 3 A 80
#> 4 B NA
#> 5 B NA
創建於 2022-11-23,使用reprex v2.0.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.