我想在 R 中重新创建这个 Stata 命令
by Area Sex Age: keep if (Infected==1) | ((_n<=1*ncases) & (Infected==0))
这是一个匹配的病例对照研究
我的数据框包含 193 个案例和每组可变数量的控件(区域性别和年龄)。我正在尝试根据区域性别和年龄分组为每个案例匹配 1 个随机对照。
ncases是我的数据框中的一个整数,表示每组中的病例数(区域性别年龄)
上面的命令行在 Stata 中运行良好。
但是,我编写的 R 代码仅适用于第一组:
dat5 <- subset(dat4,by=list(Area,Sex,Age),(Infected=1 |
((seq(dim(dat4)[1]))<=1*ncases & Infected==0)))
这是我的数据框 dat4: Infected=1 是一个案例,infected=0 是一个控件。
Area Sex Age CensusNo Animals Infected ncases
18825 1 1 23 1023224 0 0 1
18826 1 1 23 1024109 1 0 1
18827 1 1 23 1024163 0 1 1
41428 7 2 50 1047107 1 0 1
41429 7 2 50 1047029 1 0 1
41430 7 2 50 1046901 1 1 1
41439 5 1 36 1047037 1 0 2
41440 5 1 36 1047127 1 0 2
41441 5 1 36 1047125 1 0 2
41442 5 1 36 1047005 1 0 2
41443 5 1 36 1046994 0 1 2
41444 5 1 36 1046972 0 1 2