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

如何用filter排除数据框中属于指定列表的猪只数据?

过滤CT扫描数据:排除指定猪只样本

问题背景

我手头有一批猪只的CT扫描数据,需要排除扫描时年龄过大的样本。数据包含随时间变化的多组扫描记录(涵盖气道面积、直径等指标),每头猪对应数百条给药/未给药的观测数据,总计涉及17头猪:

df %>% distinct(pig)
# A tibble: 17 × 1
   pig   
   <fct> 
 1 29-10 
 2 29-9  
 3 31-1  
 4 31-3  
 5 29-1  
 6 29-2  
 7 29-5  
 8 29-4  
 9 29-6  
10 100-1 
11 100-3 
12 107-1 
13 107-11
14 107-2 
15 107-3 
16 107-4 
17 107-5 

需要排除的猪只为:29-1, 29-2, 29-4, 29-5, 29-6。目前可以通过逐个写!=实现过滤,但希望创建一个可复用的排除列表,实现与filter(pig %in% excluded)相反的筛选效果,尝试使用!运算符但没掌握正确语法。

解决方案

只需在%in%运算符前添加!,即可筛选出不在排除列表中的样本。为了可读性,建议把pig %in% excluded用括号包裹:

# 定义可复用的排除列表
excluded <- c("29-1", "29-2", "29-4", "29-5", "29-6") 

# 过滤掉排除列表中的猪只
filtered_df <- df %>% 
  filter(!(pig %in% excluded))

# 验证剩余猪只
filtered_df %>% distinct(pig)

说明

!(pig %in% excluded)的逻辑是:筛选出不属于排除列表的pig记录,一次性完成所有指定猪只的排除。这种方式比逐个写!=更简洁,后续修改排除名单时,只需更新excluded向量即可,维护性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:30:15