将 NA 替换为同一列的值

  • 本文关键字:一列 NA 替换 r
  • 更新时间 :
  • 英文 :


我有一个数据集,看起来像这样:

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)创建

最新更新