【发布时间】:2020-09-07 02:34:40
【问题描述】:
我有一个包含约 20,000 个病例和约 50,000 个对照的数据集。每个案例都使用 SQL 中的连接过程与 3 个对照进行了初步匹配,该过程要求对某些协变量(例如,该人是否在 2019 年参加研究的二元变量)进行精确匹配,并允许在一个范围内匹配其他协变量(例如,在 +/- 25 天内登记的总天数)。因此,一个控件可以被列为多个案例的可能控件。
在 R 中,我想从每个案例的 3 个可能匹配项中为每个案例选择控件,同时确保两件事:1)控件不重复,2)对于没有完全匹配的案例,控件在协变量上尽可能地匹配。
我认为我需要的方法是按 case_id 对数据进行分组,并从每个组中选择 control_id,其中协变量之间的差异最小化。问题是我需要确保一旦为一组中的一个案例选择了一个控件,它就不能用作第二个案例的控件,无论协变量匹配有多好。
这是一些示例数据:
case_id <- c(1,1,1,2,2,2,3,3,3,4,4,4)
control_id <- c(5,14,7,8,9,10,11,12,13,14,15,5)
case_enrolled_2019 <- c(1,1,1,0,0,0,0,0,0,1,1,1)
control_enrolled_2019 <- c(1,1,1,0,0,0,0,0,0,1,1,1)
case_enrollment_count <- c(1,1,1,3,3,3,1,1,1,1,1,1)
control_enrollment_count <- c(2,1,1,3,3,3,1,1,1,1,1,2)
case_enrolled_days <- c(300,300,300,200,200,200,600,600,600,300,300,300)
control_enrolled_days <- c(300,300,280,200,200,210,601,610,598,300,301,300)
cbind(case_id, control_id, case_enrolled_2019, control_enrolled_2019, case_enrollment_count, control_enrollment_count, case_enrolled_days, control_enrolled_days)
我需要这样的输出:
case_id <- c(1,2,3,4)
control_id <- c(14,8,11,15)
case_enrolled_2019 <- c(1,0,0,1)
control_enrolled_2019 <- c(1,0,0,1)
case_enrollment_count <- c(1,3,1,1)
control_enrollment_count <- c(1,3,1,1)
case_enrolled_days <- c(300,200,600,300)
control_enrolled_days <- c(300,200,601,301)
cbind(case_id, control_id, case_enrolled_2019, control_enrolled_2019, case_enrollment_count, control_enrollment_count, case_enrolled_days, control_enrolled_days)
【问题讨论】:
-
问题:
control_enrolled_2019对吗?我问的原因是cbindinstruction。当您使用更长的向量执行此操作时,cbind 将复制较短向量的值。 -
不,它不正确 - 已修复错误。
标签: r