[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