我正在进行一项研究,参与者每年接受一次判断.如果判断在50岁之前开始,参与者应被分配到"年轻"组.这个定义是永久性的,所以如果他们在≥50的时候被再次判断,他们仍然应该被定义为"年轻".如果他们在≥50岁时第一次被判断,他们会被分配到"老"组.
换句话说,参与者只能是年轻的或年老的,他们不能在研究过程中从年轻切换到老年.
现在,我的数据(>;20000行)错误地如下所示:
ID <- c("person1", "person1", "person2", "person3", "person3", "person3", "person4")
timepoint <- c(2020,2021,2018,2015,2016,2017,2021)
age <- c(49, 50, 45, 48, 49, 50, 55)
group <- c("young", "old", "young", "young", "young", "old", "old")
myinput <- data.frame(ID, timepoint, age, group)
>myinput
ID timepoint age group
1 person1 2020 49 young
2 person1 2021 50 old
3 person2 2018 45 young
4 person3 2015 48 young
5 person3 2016 49 young
6 person3 2017 50 old
7 person4 2021 55 old
在第2行和第6行,第group
行是不正确的,因为按照我上文所述的规则,第person1
行和第person3
行被永久定义为年轻.
本质上,我需要R来判断列表,以查看Person是否曾经被列为myinput$age < 50
,并为所有行定义myinput$ = "young"
,其中包含一个个体ID
,可能使用if else
.
请注意,情况并非如此.
ID timepoint age group
1 person1 1 49 young
2 person1 2 50 young
3 person2 1 45 young
4 person3 1 48 young
5 person3 2 49 young
6 person3 3 50 young
7 person4 1 55 old
Edit:谢谢大家给出的有用答案!