【问题标题】:Removing second record for the same ID删除同一 ID 的第二条记录
【发布时间】:2023-02-23 03:12:43
【问题描述】:

我在 Stata 中有一个数据集,其中一个 ID 最多可以有两个不同的记录。我正在尝试限制我的数据集,以便在测试 A 的结果为阳性时删除第二条记录。我在下面提供了示例数据集的示例。在我想要的输出中,我想保留 ID 1 的两条记录、ID 2 的第一条记录(测试 A 记录)以及 ID 3 和 ID 4 的记录。

  ID    |      Test Type  Result    

----------+------------------------------------

      1 |          A       -ve       
      1 |          B       +ve      
      2 |          A       +ve       
      2 |          B       +ve     
      3 |          A       +ve 
      4 |          A       -ve  

----------+------------------------------------

目前我的数据集是按 ID 排序的,但我无法弄清楚如何根据上述我想要的标准来限制数据集。

【问题讨论】:

    标签: stata multiple-records


    【解决方案1】:

    尝试类似的东西:

    bys ID Result: gen aux=_n
    keep if aux==1
    

    我不确定它是否适用于您的特定情况,因为它会对数据进行排序,但我希望它能有所帮助

    【讨论】:

    • 这是错误的,因为排序会丢失关于哪个结果是第一个的信息。
    【解决方案2】:

    创建一个只有 ID 和测试类型 A 结果的新数据集。

    将新数据集与原始数据合并,然后删除 result_a 为正且测试类型为 B 的观察结果。

    我没有测试代码,因为我的电脑上没有 Stata,但这应该可以。

    preserve
    keep if TestType == "A"
    keep ID Result
    ren Result Result_a
    save a.dta, replace
    restore
    
    merge m:1 ID using a.dta
    
    drop if Result_a == "+ve" & TestType == "B"
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多