You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ifelse()结合is.na()在mutate()中为泰坦尼克数据集创建年龄组变量

解决泰坦尼克数据集年龄分组(含NA值处理)的问题

嘿,这个需求很好实现,我们可以通过嵌套ifelse()或者更清晰的case_when()来完成,核心就是把is.na(age)的判断放在最优先的位置,直接把NA值归为adult。

方法一:嵌套ifelse()实现

这是最直接的写法,先处理NA的情况,再区分儿童和成人:

library(dplyr)

# 假设你的数据集叫titanic_data
titanic_data <- titanic_data %>%
  mutate(child_or_adult = ifelse(
    is.na(age),  # 首先检查年龄是否为NA
    "adult",     # NA的话直接标记为adult
    ifelse(age < 18, "child", "adult")  # 非NA的话,按年龄判断
  ))

方法二:用case_when()提升可读性

如果以后要扩展更多年龄分组,嵌套ifelse()会变得混乱,推荐用dplyr的case_when(),它的分支逻辑更清晰:

titanic_data <- titanic_data %>%
  mutate(child_or_adult = case_when(
    is.na(age) ~ "adult",  # 优先处理NA值
    age < 18 ~ "child",    # 年龄小于18的标记为child
    TRUE ~ "adult"         # 剩下的所有情况(年龄≥18且非NA)都标记为adult
  ))

两种方法都能完美满足你的需求:所有age为NA的乘客都会被归类为adult,不会被忽略,同时正常的年龄值也能正确分组。

内容的提问来源于stack exchange,提问作者Reeza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:20:04