【发布时间】:2017-07-13 11:46:41
【问题描述】:
我对 R 很陌生,所以请温柔一点。
我正在参加 Kaggle Titanic 比赛,让我进入 R 并解决问题。
我正在设计一个功能,但我对下一步该做什么的逻辑有点卡住了。
所以,就这样吧。我的目标是获取年龄数据并将所有 NA 替换为该人头衔的年龄中位数。例如如果此人是大师,我想获得所有大师的中位数,并用该中位数替换 NA。先生等也一样。
我已经设法为自己创建了一个包含标题和年龄的 data.frame,如下所示:
library(tibble)
data.combined <-
tibble(
data.combined.new.title = c(
"Mr.",
"Mrs.",
"Miss",
"Mrs.",
"Mr.",
"Mr.",
"Mr.",
"Master",
"Mrs."
),
data.combined.Age = c(22, 38, 26, 35, 35, NA, 54, 2, 27)
)
正如您在此列表中看到的,在他的年龄旁边有一个先生和 NA。我想用列表中所有其他先生的中位数替换那个 NA。
所以我有以下代码,可以用整个数据集的中位数替换 NA。
#Creates my data.frame
agedata <- data.frame(data.combined$new.title, data.combined$Age)
#replace NA with the mean of the whole data set
agedata$data.combined.Age[is.na(agedata$data.combined.Age)] <- median(agedata$data.combined.Age, na.rm = TRUE)
我只是不明白如何在此代码中添加以将 NA 替换为头衔组的中位数,先生,大师,夫人,小姐?
任何指针都大大收到。
我不太关心这是否有助于我对 Kaggle 的预测,更多的是代码的外观。
非常感谢。
【问题讨论】:
-
我想最简单的是
na.aggregate即。library(zoo);df1 %>% group_by(group) %>% mutate(traits = na.aggregate(traits, FUN = median))
标签: r replace na median kaggle