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

如何使用dplyr过滤感染数据集,保留无感染及1年内感染的样本?

筛选感染数据集:保留未感染样本及1年内感染样本

需求说明

我有一个感染相关的数据集,希望最终数据集同时包含未感染和感染的样本,但需要移除**感染发生时间超过1年(365天)**的样本。

示例数据

感染情况 0=未感染 1=感染(SSI)感染发生天数(TTI)
0NA
124
1450

预期结果

感染情况 0=未感染 1=感染(SSI)感染发生天数(TTI)
0NA
124

错误尝试

我原本运行的代码:

dt_one_year <- dt %>% filter(TTI %in% 0:365)

这段代码错误地移除了未感染的行和感染超1年的行,我需要的是保留未感染的行和感染发生在1年内的行,请问如何用dplyr实现仅移除SSI=1且TTI>365的样本?


解决方案

正确代码

使用dplyr的filter函数,通过明确的逻辑条件实现需求:

dt_one_year <- dt %>% 
  filter(SSI == 0 | (SSI == 1 & TTI <= 365))

逻辑说明

  • 原代码的问题:TTI %in% 0:365会直接过滤掉TTI为NA的未感染样本,且没有区分感染状态,不符合需求。
  • 新逻辑拆解:
    • SSI == 0:保留所有未感染样本(不管TTI是否为NA)
    • (SSI == 1 & TTI <= 365):仅保留已感染且感染天数≤365天的样本
    • 用逻辑或(|)将两个条件组合,确保符合任一条件的样本都被保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:15:29