R语言subset函数中如何指定行位置实现数据子集筛选
解决方案
错误原因
你之前的subset(Dates, Date >= 30)写法不生效,是因为subset()的判断条件默认是针对列值的逻辑校验:Date列是日期类型,和数值30对比时,R会将30解析为1970-01-01之后第30天的日期(即1970-01-31),最终会返回所有行,完全不符合按行位置筛选的需求。
实现方法
方法1:用内置tail()函数(最简便)
直接提取数据集最后N行,不需要写死日期或行号:
# 提取最后2行 tail(Dates, 2)
方法2:用subset()按行位置筛选
如果你必须使用subset()函数,可以通过行号序列做判断条件:
# nrow(Dates)获取总行数,行号大于等于总行数-1,即取最后2行 subset(Dates, seq(nrow(Dates)) >= nrow(Dates) - 1)
方法3:直接用行索引切片
不需要调用subset(),直接通过数据框的行索引筛选:
# 写死行号的写法,适合你当前31行的数据集 Dates[30:31, ] # 动态写法,不管数据集有多少行都能取最后2行 Dates[(nrow(Dates)-1):nrow(Dates), ]
内容的提问来源于stack exchange,提问作者sa90210
相关产品推荐
相关产品推荐

