我有一个数据集,看起来像这样:
NAME ROLENAME NUMBER DIRECTORS COMMITTEE YEAR TOTAL OTHER BOARDS
Brown Member 10 Audit 2006 8
Brown NA 7 Legal 2006 8
Brown Member NA Audit 2007 8
Brown Director 7 Legal 2007 NA
Chapman Chairman 4 Compensation 2008 5
Chapman Specialist NA Corporate 2008 NA
Chapman NA 4 Compensation 2009 5
Chapman Specialist 6 Corporate 2009 5
我只展示了完整数据集的一部分。对于这两个人来说,我的寿命都比你上面看到的要长。我希望NAs被"明显的"数字和字符串所取代。所以它看起来像这样:
NAME ROLENAME NUMBER DIRECTORS COMMITTEE YEAR TOTAL OTHER BOARDS
Brown Member 10 Audit 2006 8
Brown Director 7 Legal 2006 8
Brown Member 10 Audit 2007 8
Brown Director 7 Legal 2007 8
Chapman Chairman 4 Compensation 2008 5
Chapman Specialist 6 Corporate 2008 5
Chapman Chairman 4 Compensation 2009 5
Chapman Specialist 6 Corporate 2009 5
我真的不知道我是否必须用'if-function'做些什么,因为有简单的方法来重命名/替换NAs。希望有人能帮助我。
您可以使用tidyr的fill
:
library(tidyverse)
df <- tribble(
~NAME, ~ROLENAME, ~NUMBER_DIRECTORS, ~COMMITTEE, ~YEAR, ~TOTAL_OTHER_BOARDS,
"Brown", "Member", 10, "Audit", 2006, 8,
"Brown", NA, 7, "Legal", 2006, 8,
"Brown", "Member", NA, "Audit", 2007, 8,
"Brown", "Director", 7, "Legal", 2007, NA,
"Chapman", "Chairman", 4, "Compensation", 2008, 5,
"Chapman", "Specialist", NA, "Corporate", 2008, NA,
"Chapman", NA, 4, "Compensation", 2009, 5,
"Chapman", "Specialist", 6, "Corporate", 2009, 5
)
df |>
arrange(NAME, COMMITTEE) |> # optional
group_by(NAME, COMMITTEE) |>
fill(ROLENAME, NUMBER_DIRECTORS, TOTAL_OTHER_BOARDS, .direction = "updown") |>
ungroup() # if needed
#> # A tibble: 8 × 6
#> NAME ROLENAME NUMBER_DIRECTORS COMMITTEE YEAR TOTAL_OTHER_BOARDS
#> <chr> <chr> <dbl> <chr> <dbl> <dbl>
#> 1 Brown Member 10 Audit 2006 8
#> 2 Brown Member 10 Audit 2007 8
#> 3 Brown Director 7 Legal 2006 8
#> 4 Brown Director 7 Legal 2007 8
#> 5 Chapman Chairman 4 Compensation 2008 5
#> 6 Chapman Chairman 4 Compensation 2009 5
#> 7 Chapman Specialist 6 Corporate 2008 5
#> 8 Chapman Specialist 6 Corporate 2009 5
在2022-07-07由reprex包(v2.0.1)创建