代码之家  ›  专栏  ›  技术社区  ›  Nettle

指示行合并已更新

  •  0
  • Nettle  · 技术社区  · 7 年前

    在一个新的列中,我想指出每次coalesce更新一个丢失的记录。

    目的 left_join/coalesce 用正确代码替换NAs的操作。我想跟踪在每次迭代中更改的值。

    # DATA
    df <- tibble(
    x =  c(1, 2,  3, NA, NA), #<Original data
    y = c( 1, NA, 3, 4, NA)   #<New data from join
    )
    
    # A tibble: 5 x 2
          x     y
      <dbl> <dbl>
    1     1     1
    2     2    NA
    3     3     3
    4    NA     4
    5    NA    NA
    

    # A tibble: 5 x 2
          x changed  
      <dbl> <chr>    
    1     1 no.change
    2     2 no.change
    3     3 no.change
    4     4 corrected
    5    NA no.change
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   markus    7 年前

    你可以用 case_when

    library(tidyverse)
    df %>% 
      mutate(new = coalesce(x, y)) %>% 
      mutate(changed = case_when(
        x == new | is.na(new) ~ "no.change",
        TRUE ~ "corrected")) %>% 
      select(new, changed) # %>% rename(x = new)
    

    # A tibble: 5 x 2
    #    new changed  
    #  <dbl> <chr>    
    #1     1 no.change
    #2     2 no.change
    #3     3 no.change
    #4     4 corrected
    #5    NA no.change