[R] Newbie: Better way to do compound conditionals in subset?

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu Oct 26 22:59:12 CEST 2006


Jeffrey Robert Spies <jspies at nd.edu> writes:

> I would personally use the following method (example using the iris  
> data included with R):
> 
> data(iris)
> tSelect <- (iris$Sepal.Length > 6.0 & iris$Sepal.Length < 6.2 & iris 
> $Sepal.Width == 3.0)
> tSelectedData <- iris[tSelect,]
> 
> Then  you can simply work with tSelectedData for whatever equation  
> you use, i.e.:
> 
> tSelectedData$Sepal.Length - tSelectedData$Sepal.Width
> 
> Of course you could write all of this on one line, but that doesn't  
> read well.
> 
> Hope that helps,

But why not use subset()? For a neat way around the as.Date business,
consider 

between <- function(x,x1,x2) x >= x1 & x < x2
begin <- as.Date("2004-04-22")
end <- as.Date("2004-09-01")
before2sw <- subset(energy.data, 
   between(as.Date(start, format="%d-%b-%y"), begin, end) & temp < 65)
 

> Jeff.
> 
> On Oct 26, 2006, at 3:55 PM, Zembower, Kevin wrote:
> 
> > There must be a better way to select the rows after 22-Apr-2004 and
> > before 01-Sep-2004 with a temperature below 65 than this:
> >
> >> before2sw1 <- subset(energy.data, as.Date(start, format="%d-%b-%y") <
> > as.Date("01-Sep-04", format = "%d-%b-%y"))
> >> before2sw2 <- subset(before2sw1, as.Date(start, format="%d-%b-%y") >=
> > as.Date("22-Apr-04", format = "%d-%b-%y"), select=c(therms,temp,days))
> >> before2sw <- subset(before2sw2, temp < 65)
> >
> > Is it also possible to combine in this step:
> >
> > attach(before2sw)
> > before2sw.HDD <- therms / (65 - temp) * days
> >
> > My data looks like this:
> >> head(energy.data)
> >       start therms   gas KWHs elect temp days
> > 1 10-Jun-98      9 16.84  613 63.80   75   40
> > 2 20-Jul-98      6 15.29  721 74.21   76   29
> > 3 18-Aug-98      7 15.73  597 62.22   76   29
> > 4 16-Sep-98     42 35.81  460 43.98   70   33
> > 5 19-Oct-98    105 77.28  314 31.45   57   29
> > 6 17-Nov-98    106 77.01  342 33.86   48   30
> >>
> >
> > Thanks for your suggestions and advice. I'm continuing to enjoy  
> > learning
> > R.
> >
> > -Kevin
> >
> > Kevin Zembower
> > Internet Services Group manager
> > Center for Communication Programs
> > Bloomberg School of Public Health
> > Johns Hopkins University
> > 111 Market Place, Suite 310
> > Baltimore, Maryland  21202
> > 410-659-6139
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch 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 at stat.math.ethz.ch 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.
> 

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list