R tidyverse эквивалентно Stata заменить, если отсутствует - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь найти R / Tidyverse, эквивалентный Stata's replace b = a if missing(b).

Скажем, у меня есть эти данные:

library(tidyverse)
data <- data.frame(a=c(1:8), b= c(1:5, NA, NA, NA))

Я пытаюсь заменить отсутствующие значения в b со значениями в a. Я пытаюсь это:

data %<>% mutate(b = replace_na(b, a))

Но получаю ошибку. Что я могу сделать в tidyverse, чтобы решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 21 марта 2020

То, как вы это делаете, я бы использовал coalesce из dplyr:

data %<>% mutate(b = coalesce(b, a))

Вывод:

data

  a b
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
2 голосов
/ 21 марта 2020

Вы можете просто использовать ifelse в mutate:

data %>% 
  mutate(b = ifelse(is.na(b), a, b))
#>   a b
#> 1 1 1
#> 2 2 2
#> 3 3 3
#> 4 4 4
#> 5 5 5
#> 6 6 6
#> 7 7 7
#> 8 8 8

Создано в 2020-03-21 пакетом prex (v0.3.0)

0 голосов
/ 21 марта 2020

В data.table, опция fcoalesce

library(data.table)
setDT(data)[, b  := fcoalesce(b, a)]
...