我有两列“性别”和“年龄”,其中“性别”对于男性是1,对于女性是2。年龄大概是介于0.5到90之间的数字,NA
散落在周围。
如何运行一个ifelse
公式,以便当该相应单元格的年龄为NA
时,我可以填写男性和类似女性的平均年龄?
如何修改代码以帮助解决此问题?当前代码:
dataset$Age = ifelse(is.na(dataset$Age),
ave(dataset$Age, FUN = function(x) mean(x, na.rm = TRUE)),
dataset$Age)
我希望在NA
空间中输入男性和女性的平均值。
谢谢您的提前帮助。
答案 0 :(得分:0)
根据评论进行了编辑:
我可以通过2个步骤解决此问题:
-首先使用汇总来按性别查找平均年龄
-然后使用ifelse
library(dplyr)
df_agg <- df %>% group_by(gender) %>% summarise(Age = mean(age, na.rm = TRUE))
male_avg <- df_agg$Age[df_agg$gender == 1]
female_avg <- df_agg$Age[df_agg$gender == 2]
df$age <- ifelse(is.na(df$age), ifelse(df$gender == 1, male_avg, female_avg), df$age)