我想对数据帧进行子集化,并对每个id进行所有观察,直到第一个不符合我的条件的观察为止。像这样:
goodDaysAfterTreatMent <- subset(Patientdays, treatmentDate < date & goodThings > badThings)
除了这将返回所有符合条件的观察值。我想要一些以不符合条件的第一个观察值停止,前进到下一个ID并返回符合条件的该ID的所有观察值,依此类推。
我唯一能看到的方法是使用很多循环,但是使用循环,通常这不是上帝的事。
希望你们有个主意
答案 0 :(得分:1)
假设您的条件是返回.gitignore
所在的行:
v < 5
答案 1 :(得分:0)
简便方法:
通过(min(which(condition == F))
查找第一个FALSE:
Patientdays<-cbind.data.frame(treatmentDate=c(1:5,4,6:10),date=c(2:5,3,6:10,10),goodThings=c(1:11),badThings=c(0:10))
attach(Patientdays)# Just due to ease of use (optional)
condition<-treatmentDate < date & goodThings > badThings
Patientdays[1:(min(which(condition == F))-1),]
编辑:添加结果。
treatmentDate date goodThings badThings
1 1 2 1 0
2 2 3 2 1
3 3 4 3 2
4 4 5 4 3