Укажите, что строки объединены - PullRequest
0 голосов
/ 31 августа 2018

В новом столбце я хотел бы указать, что каждый раз, когда объединяются обновления отсутствующей записи.

Цель : у меня есть набор данных с пропущенными категориальными кодами. Чтобы заменить пропущенные значения, я использую несколько операций left_join/coalesce, которые заменяют NA правильными кодами. Я хотел бы отслеживать, какие значения менялись во время каждой итерации.

# 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 Ответ

0 голосов
/ 31 августа 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...