在R中对数据框进行条件审查,避免列间推导
数据审查规则优化方案
问题背景
现有DATA数据框需执行以下基础审查规则:
- 审查
n值小于10的记录 - 审查
percent值小于0.05或大于0.95的记录
但仅靠上述规则无法实现核心目标:禁止用户通过n列推导percent列,或通过percent列推导n列。原因在于percent是基于Met字段的Yes/No成对记录计算得出的,现有规则未考虑成对记录的关联性,导致仍存在推导空间。
核心解决思路
要达成目标,必须针对Met的成对记录(Yes和No为一组)进行联动审查,确保每一组中要么:
- 成对的两条记录都被基础规则触发审查,要么
- 成对记录中至少有一条的
n和percent同时被审查,让用户无法通过已知值反向推导另一条的未知值
具体实现步骤
- 标记成对记录组:按
Met以外的唯一标识字段(比如分组ID、类别字段等),将Met=Yes和Met=No的记录归为同一组 - 组内联动审查判断:
- 若组内任意一条记录触发基础审查规则(
n<10或percent<0.05/percent>0.95),则检查同组的另一条记录:- 如果另一条记录未触发基础规则,需强制审查其
n和percent中的至少一个,彻底封死推导路径 - 若组内两条记录都触发基础规则,则直接按原规则审查即可(比如示例中第5行的65未被审查,就是因为对应成对记录的
percent都已被审查,用户无法通过已审查的值反向推导这条记录的n)
- 如果另一条记录未触发基础规则,需强制审查其
- 若组内任意一条记录触发基础审查规则(
- 批量执行审查逻辑:用数据处理工具(如R的
dplyr或Python的pandas)实现分组判断逻辑,自动完成全数据的联动审查
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

