R语言中如何仅移除伦敦地区私立医院就诊的患者数据?
正确筛选方法及错误原因解析
错误原因
你原来的代码用&串联所有条件,逻辑变成了只保留既不是伦敦地区,同时也不在这三家私立医院的患者——这会把其他地区在这三家医院就诊的患者也一并删掉,所以才会误删约900条数据。
正确代码实现
方法一:保留符合任一条件的行
筛选逻辑:要么患者不是伦敦地区,要么是伦敦地区但不在目标私立医院就诊
library(dplyr) # 先定义要排除的三家私立医院列表,更简洁 target_hospitals <- c("Primrose Hospital", "Oak Hospital", "Wilson Hospital") liver <- filter(liver, region_name != "London" | !(unit_name %in% target_hospitals))
方法二:直接排除目标行
筛选逻辑:移除「伦敦地区 + 在目标私立医院就诊」的行,保留其余所有行
liver <- filter(liver, !(region_name == "London" & unit_name %in% target_hospitals))
补充说明
%in%是R里的便捷运算符,用来判断某个值是否在指定列表中,比写多个unit_name != "xxx"更简洁易维护。
内容的提问来源于stack exchange,提问作者s_greene
相关产品推荐
相关产品推荐

