#r
Вопрос:
Я хочу создать новую колонку на основе условий
Мой фрейм данных выглядит так:
Id Year Code Y
1 2009 0 0
1 2010 NA NA
2 2009 0 0
2 2010 NA NA
3 2009 1 1
3 2010 NA NA
4 2009 2 1
4 2010 NA NA
Мне нужно заменить значения в моей исходной переменной Y таким образом, чтобы возвращалось 1, когда код первого года для каждого человека равен 0, а строка второго года/кода равна NA. Результат, который я ищу, это:
Id Year Code Y
1 2009 0 0
1 2010 NA 1
2 2009 0 0
2 2010 NA 1
3 2009 1 1
3 2010 NA 0
4 2009 2 1
4 2010 NA 0
Заранее спасибо!
Комментарии:
1. Охватывает ли ваш пример все возможные комбинации? И всегда ли Y для 2009 года не NA?
Ответ №1:
Это заменяет 0 на 1 и 1 на 0, если NA
они присутствуют в Y
столбце для каждого Id
.
library(dplyr)
df %>%
arrange(Id, Year) %>%
group_by(Id) %>%
mutate(Y = ifelse(is.na(Y), as.integer(!as.logical(na.omit(Y))), Y))
# Id Year Code Y
# <int> <int> <int> <int>
#1 1 2009 0 0
#2 1 2010 NA 1
#3 2 2009 0 0
#4 2 2010 NA 1
#5 3 2009 1 1
#6 3 2010 NA 0
#7 4 2009 2 1
#8 4 2010 NA 0
Комментарии:
1. Большое тебе спасибо, Ронак !