enrolments<-data.table(ID=c(100001, 100001, 100001, 100001, 100002,
100002, 100002, 100002),
start_date=c("Jan-10","Jan-10","Jun-10","Jun-10", "Jan-10","Jan-11","Jan-11","Jun-11"),
subject_code = c(1:8),
status = c("Pass","Fail","Withdrawn","Pass","Pass","Pass","Pass","Pass"))我有一个data.table注册与student_IDs,开始日期,主题代码,状态(通过,撤回,失败)。
ID start_date subject_code状态 1 100001 /10 1通行证 2 100001 1/10 2失败 3 100001 6月10日3撤回 4 100001 6月-10 4通过 5. 100002 /10/5通行证 6 100002 /11 6通行证 7 100002 /11 7通行证 6月8日100002 -11日8次传球
我想创建一个新列"first_subjects“,如果前两个主题的状态被撤回或失败,列= Y,否则为N
数据已经按学生和日期进行了排序。
发布于 2014-12-01 07:16:00
你可以试试
enrolments[, first_subjects:=c('N', 'Y')[any(status[1:2] %in%
c('Fail', 'Withdrawn'))+1] , by=ID]
enrolments
# ID start_date subject_code status first_subjects
#1: 100001 Jan-10 1 Pass Y
#2: 100001 Jan-10 2 Fail Y
#3: 100001 Jun-10 3 Withdrawn Y
#4: 100001 Jun-10 4 Pass Y
#5: 100002 Jan-10 5 Pass N
#6: 100002 Jan-11 6 Pass N
#7: 100002 Jan-11 7 Pass N
#8: 100002 Jun-11 8 Pass Nhttps://stackoverflow.com/questions/27223358
复制相似问题