【发布时间】:2020-07-28 01:38:37
【问题描述】:
我正在使用 RpostgreSQL、dplyr 和 foreach 包分析数据。
总数据50万行,目标组5000。
我想为每个目标提取 4 个对照组。因此,对照组的总N为20,000。
问题是,在提取的 20,000 人中,不应该有重复的值,但会有重复的。并且控件不应该在trt组中。
我的代码有重复值。我该怎么办?
非常感谢
我使用的代码形式如下。
controlgroup <- trtgroup[1,] %>% select(person_id,enroll_date,measurement_date,age,value,gender,case_number) %>% .[0,]
system.time({
controlgroup <- foreach(i=1:50, .combine=rbind, .packages=c('dplyr','lubridate')) %dopar% {
target_patient <- allo_case[i,] %>% select(person_id,enroll_date,measurement_date,age,value,gender,case_number)
cont_list <- controlgroup %>% select(person_id)
control_tmp1 <- enroll5_m %>% filter((gender == target_patient[6] %>% as.numeric) & # gender
(age >= target_patient[4] %>% as.numeric - 5 & age <= target_patient[4] %>% as.numeric + 5) & # age +- 5
(!(person_id %in% (cont_list %>% select(person_id)))) &
(!(person_id %in% (trtgroup %>% select(person_id)))) %>% slice(1:4)
sample_n_number <- if_else(nrow(control_tmp1) >= 4, 4, nrow(control_tmp1) %>% as.double())
control_tmp2 <- control_tmp1 %>% sample_n(sample_n_number) %>% mutate(case_number = i)
return(control_tmp2)
}
})
【问题讨论】: