case_when() мутирует в канале, но сохраняет исходные данные

У меня есть df, на основе которого я создал столбец на основе внешних данных. У меня есть около 4 значений, которые не совпадают во внешних данных, поэтому в моем столбце они имеют значение «Н/П». Я хочу исправить NA вручную, используя mutate() и case_when(), но я не могу понять, как сказать моему case_when() поддерживать данные, которые не начинаются как «NA». Пример данных ниже:

data(mtcars)
mtcars %>%
  mutate(carb = case_when(
    cyl == 4 ~ 5000
  ))
cyl    carb
<dbl> <dbl>

6   NA          
6   NA          
4   5000            
6   NA          
8   NA          
6   NA          
8   NA          
4   5000            
4   5000            
6   NA  

Если бы это были мои данные, я бы хотел 5000 вместе с исходными данными в столбце «углеводы».

Благодарю вас!


person mbeasle2    schedule 07.04.2021    source источник


Ответы (1)


К счастью, этот вопрос относительно тривиален. В case_when() мы проверяем список условий по порядку, поэтому, если бы второй аргумент имел условие TRUE, и мы установили, если это условие выполнено, результат будет carb, мы могли бы получить наш результат.

Ниже я привел иллюстративный репрекс.

library(tidyverse)

mtcars %>%
  mutate(carb = case_when(
    cyl == 4 ~ 5000,
    TRUE ~ carb
  )) %>% 
  head(10)
#>                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4 5000
#> Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4 5000
#> Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4 5000
#> Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

Создано 07 апреля 2021 г. в пакете reprex (v2.0.0)

person Joel Kandiah    schedule 07.04.2021