You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在R语言中筛选年龄介于25至29之间的数据子集?

解决R中筛选年龄子集的问题

别担心,这是新手常犯的小错误,我来一步步帮你修正!

你的代码有两个关键问题导致结果不符合预期:

  • 逻辑运算符用反了:你用了|(逻辑“或”),这会筛选出年龄小于25或者大于29的样本,正好和你想要的25-29区间相反;应该用&(逻辑“且”)来同时满足两个条件。
  • 年龄的类型与比较方式错误:你把25和29用单引号括起来当成字符串比较了,如果你的A_AGE字段是数值型,这样的写法会触发类型转换错误;如果是字符型,字符串的比较逻辑和数值完全不同(比如字符'100'会被认为小于'29',因为第一个字符'1'比'2'小),结果肯定不对。

正确的解决方法

首先确保你的年龄字段是数值型(如果原本是字符型,先转换),然后用正确的筛选逻辑:

方法1:使用逻辑“且”运算符

# 先将A_AGE转换为数值型(如果当前是字符类型)
cps_single$A_AGE <- as.numeric(cps_single$A_AGE)
# 筛选25到29之间(包含25和29)的样本
cps_single_20s <- cps_single %>% filter(A_AGE >= 25 & A_AGE <= 29)

方法2:使用dplyr的between()函数(更简洁)

dplyr提供了专门的区间筛选函数,代码更易读:

cps_single$A_AGE <- as.numeric(cps_single$A_AGE)
cps_single_20s <- cps_single %>% filter(between(A_AGE, 25, 29))

如果你的A_AGE原本就是数值型,那可以跳过转换的步骤直接筛选。

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

火山引擎 最新活动