Подстановка данных с использованием нескольких условий
Я пытаюсь заменить значения столбца наблюдением, учитывая набор условий. Данные как дано:
Sex Age
male 34.5
female NA
male 62
male NA
Я хочу заменить данные, где пол женский, а возрастное значение равно NA.
В настоящее время я использую цикл for:
for(i in 1:length(data$Sex){
if(data$Sex[i]=="male"){
if(is.na(data$Age[i])){
data$Age[i] <- 30.7
}
}
}
и это прекрасно работает. Мне было любопытно, правильно ли я понял или есть вычислительно более простой способ получить это правильно.
Заранее спасибо.:)
2 ответа
Решение
Попробуй это:
data[data$Sex=='female' & is.na(data$Age),'Age']<-30.7
Предполагая, что вы хотите заменить "женский", как описано в тексте (вместо "мужской", как это сделано в вашем коде):
library(dplyr)
data %>%
mutate(Age = if_else(Sex == "female" & is.na(Age), 30.7, Age))
Выход:
# A tibble: 4 x 2
Sex Age
<chr> <dbl>
1 male 34.5
2 female 30.7
3 male 62.0
4 male NA