在R语言中如何使用多条件if-then语句判断年龄范围?
在R语言中实现多条件性别-年龄范围判断
示例数据集
先构造符合需求的示例数据:
df <- data.frame( Sex = c("Male", "Female", "Male", "Female", "Male"), Age_OSM = c(10, 20, 16, 14, 7) )
方法1:Base R 嵌套ifelse
直接用基础R的ifelse嵌套实现逻辑判断,生成标记列:
df$Condition_Met <- ifelse( df$Sex == "Male", # 男性判断逻辑:8 ≤ Age_OSM ≤15 df$Age_OSM >= 8 & df$Age_OSM <= 15, # 女性判断逻辑:15 ≤ Age_OSM ≤25,非男非女默认标记为FALSE ifelse(df$Sex == "Female", df$Age_OSM >=15 & df$Age_OSM <=25, FALSE) )
执行后查看结果:
print(df) # Sex Age_OSM Condition_Met # 1 Male 10 TRUE # 2 Female 20 TRUE # 3 Male 16 FALSE # 4 Female 14 FALSE # 5 Male 7 FALSE
方法2:dplyr包的case_when(更简洁易读)
如果习惯用tidyverse工具链,case_when能让多条件逻辑更清晰,还可以用between简化范围判断:
library(dplyr) df <- df %>% mutate(Condition_Met = case_when( Sex == "Male" ~ between(Age_OSM, 8, 15), Sex == "Female" ~ between(Age_OSM, 15, 25), TRUE ~ FALSE # 所有其他情况统一标记为FALSE ))
这个方法和base R的结果完全一致,但逻辑结构更直观,适合复杂多条件场景。
内容的提问来源于stack exchange,提问作者confusedindividual
相关产品推荐
相关产品推荐

