如何子集数据帧直到R点

时间:2018-08-02 15:34:52

标签: r

我想对数据帧进行子集化,并对每个id进行所有观察,直到第一个不符合我的条件的观察为止。像这样:

goodDaysAfterTreatMent <- subset(Patientdays, treatmentDate < date & goodThings > badThings)

除了这将返回所有符合条件的观察值。我想要一些以不符合条件的第一个观察值停止,前进到下一个ID并返回符合条件的该ID的所有观察值,依此类推。

我唯一能看到的方法是使用很多循环,但是使用循环,通常这不是上帝的事。

希望你们有个主意

2 个答案:

答案 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