R语言中基于多条件与关联变量过滤数据框的问题
问题解决:精准过滤目标观测
核心需求回顾
你需要排除的是同时满足以下两个条件的观测:
- 变量
fruehere_FAS_Nutzung取值为nein - 变量
frueheres_FAS_ODEG取值为ausgewaehlt或 变量frueheres_FAS_andere取值为ausgewaehlt
现有代码的问题
你连续调用两次filter()并用|连接的写法不符合dplyr的链式语法逻辑,而且逻辑表达式的组合错误,导致所有fruehere_FAS_Nutzung = 'nein'的观测都被误过滤。
正确实现代码
将所有过滤逻辑整合到单个filter()函数中,用括号明确逻辑优先级:
fasan_scores_filtered_FAS_Nutzung <- fasan_scores %>% filter(!(fruehere_FAS_Nutzung == 'nein' & (frueheres_FAS_ODEG == 'ausgewaehlt' | frueheres_FAS_andere == 'ausgewaehlt')))
逻辑说明
- 先通过
(frueheres_FAS_ODEG == 'ausgewaehlt' | frueheres_FAS_andere == 'ausgewaehlt')判断两个子条件的「或」关系 - 再与
fruehere_FAS_Nutzung == 'nein'做「且」运算,得到需要排除的观测的判定条件 - 最外层的
!表示保留不满足该复合条件的所有行
这样就能精准排除像参与者13那样的目标观测,同时保留其他fruehere_FAS_Nutzung = 'nein'但不符合后续子条件的行,以及所有ja、weiß nicht的样本。
内容的提问来源于stack exchange,提问作者GinaS
相关产品推荐
相关产品推荐

