Hi, May be this helps:
#dd res<-data.frame(Include=with(subset(dd,OBS_TYPE == "SBP" & Blood_Pressure >= 140|OBS_TYPE=="DBP" & Blood_Pressure>=90),apply(tapply(Blood_Pressure,list(PT_ID,OBS_TYPE),length)>=2,1,any,na.rm=T))) res # Include #1900 TRUE #2900 FALSE #3900 FALSE A.K. ----- Original Message ----- From: Weijia Wang <wwang....@gmail.com> To: r-help@r-project.org Cc: Sent: Thursday, January 31, 2013 10:51 AM Subject: [R] Locate Patients who have multiple high blood pressure readings On Thu, Jan 31, 2013 at 10:29 AM, Weijia Wang <wwang....@gmail.com> wrote: > Hi, > > > > I have a new question about subsetting in R. > > > > Say we have this data frame: > > > > PT_ID Blood_Pressure OBS_TYPE > > 92 1900 90.0 DBP > > 94 1900 90.0 DBP > > 174 2900 140.0 SBP > > 176 2900 130.0 SBP > > 180 3900 120.0 SBP > > 268 3900 150.0 SBP > > 268 3900 90.0 DBP > > > > I need to obtain those with 2+ DBP>=90 or 2+ SBP>=140. > > > > PT_ID=1900, he has 2 DBP>=90, so he will be included. > > PT_ID=2900, he has 1 SBP>=140, so he will NOT be included. > > PT_ID=3900, he has 1 SBP>=140 and 1 DBP>=90, so he will still NOT be > included. > > > > So, the condition requires TWO OR MORE values higher than the threshold. > It could be either SBP or DBP or both of them. > > > > I have tried ddply, but I don’t know how to add the condition 2+ inside > ddply. > > > > Any help is appreciated!! > > > > Weijia > > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.