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

R中按分组层级筛选行:选取指定年份并保留含NA值行的方法

错误原因

你使用的==是逐元素比对运算符,仅适用于两个比对向量长度一致、或短向量长度是长向量整数倍的场景。你的需求是判断year列的值是否属于指定的三个年份的集合,逐元素比对完全不符合需求,因此出现长度不匹配的警告,最终筛选结果也会出错。

修正方案

基础R写法

直接将==替换为R专用的多值匹配运算符%in%即可:

mini_data <- all_data[all_data$year %in% c('2006','2019','2020'), ]

该方案仅通过year列的取值判断是否保留行,不会过滤其他列含NA的行,完全满足你保留NA值行的需求。用你提供的示例数据运行后,会保留第1、2、5、6行(含2006年Tt为NA的行)。

dplyr写法(可选)

如果你习惯使用tidyverse系列工具,也可以用filter()函数实现:

library(dplyr)
mini_data <- all_data %>%
  filter(year %in% c('2006','2019','2020'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:05