R语言筛选Year_Birth≤1964的数据集子集问题求助
解决R语言筛选Year_Birth≤1964行的问题
你之前的代码出错在最后一步的逻辑:你提取的y是符合条件的Year_Birth数值,不是这些行的索引位置,用csv_file[-c(y), ]相当于尝试删除行号等于这些年份数值的行(比如行号1957、1954等),但你的数据行号肯定是从1开始的连续序号,这就导致要么没删到正确行,要么错误删除了不该删的行。
正确的实现方法(基础R)
直接用逻辑条件筛选整个数据框,保留满足Year_Birth ≤1964的所有行:
# 读取数据(这部分你的代码是对的) csv_file = read.csv(file = "filtered_data.csv", stringsAsFactors = FALSE, header = TRUE) # 筛选Year_Birth ≤1964的行 BabyBoomer <- csv_file[csv_file$Year_Birth <= 1964, ] # 验证结果 head(BabyBoomer) summary(BabyBoomer$Year_Birth) # 查看年份范围是否符合预期
如果你的需求是保留婴儿潮一代(1946-1964),可以调整条件:
BabyBoomer <- csv_file[csv_file$Year_Birth >= 1946 & csv_file$Year_Birth <= 1964, ]
额外说明
- 逻辑条件
csv_file$Year_Birth <= 1964会生成一个和数据框行数一致的布尔向量(TRUE/FALSE),用这个向量作为行索引,就能保留所有TRUE对应的行。 - 不要把列的数值当成行索引来用,行索引是数据框每行的位置序号(从1开始),和列的内容无关。
内容的提问来源于stack exchange,提问作者AnxiousDino
相关产品推荐
相关产品推荐

