我正在尝试分析纵向数据。每个科目至少有一次到我们的研究,最多 3 次。我需要比较每次就诊的分数,看看他们的治疗是否有助于减轻症状。
现在,我想设置列来指示主题是否有后续访问。
一栏表示受试者是否第二次访问,另一栏表示受试者是否第三次访问
我的数据集是什么样的
visit_id subject_id visit_number Measure1 Measure2 ...
1 Subject1 1
2 Subject2 1
3 Subject1 2
4 Subject3 1
5 Subject1 3
我尝试过的编码
使用 sapply 按主题 ID 遍历所有访问,如果该主题有第二次访问和第三次访问,则填充列。
我也尝试了一个 for 循环,但在每种情况下,我都不确定如何告诉它循环遍历该主题的所有实例,然后选择要比较的项目(即是否存在特定访问号)
sapply(dat$subject_id, function(x) {
if(dat$visit_number == 2) {followup2 <- "yes"
}else {followup2 <- "no"}
if(dat$visit_number == 3) {followup3 <- "yes"
}else {followup3 <- "no"}
})
我希望我的数据集看起来像什么
visit_id subject_id visit_number followup2 followup3
1 Subject1 1 yes yes
3 Subject1 2 yes yes
5 Subject1 3 yes yes
2 Subject2 1 yes no
6 Subject2 2 yes no
4 Subject3 1 no no
我打算使用类似的逻辑来遍历每个主题并比较他们在访问中的症状。比较访问 1 和 2,然后比较访问 2 和 3。
数据
dat <- read.table(header = TRUE, stringsAsFactors = FALSE,
text = "visit_id subject_id visit_number
1 Subject1 1
3 Subject1 2
5 Subject1 3
2 Subject2 1
6 Subject2 2
4 Subject3 1")