jjdow <- sample(c('Sun', 'Mon', 'Tues'), 10, replace=TRUE)
jjdata <- data.frame(admission=1:10, d.o.w.=jjdow)

#> jjdata
#   admission d.o.w.
#1          1   Tues
#2          2   Tues
#3          3   Tues
#4          4    Sun
#5          5    Mon
#6          6    Mon
#7          7    Sun
#8          8   Tues
#9          9    Sun
#10        10    Mon

new.jjdata <- within(jjdata, admission <- ifelse(d.o.w. == 'Sun',
   1.21 * admission, ifelse(d.o.w.=='Mon', .91 * admission, admission)))

#> new.jjdata
#   admission d.o.w.
#1       1.00   Tues
#2       2.00   Tues
#3       3.00   Tues
#4       4.84    Sun
#5       4.55    Mon
#6       5.46    Mon
#7       8.47    Sun
#8       8.00   Tues
#9      10.89    Sun
#10      9.10    Mon

Pat


Robin Williams wrote:
No, this is my first experience with any powerful statistical package. Any
code much appreciated.

-----Original Message-----
From: Patrick Burns [mailto:[EMAIL PROTECTED] Sent: 23 July 2008 17:44
To: Robin Williams
Subject: Re: [R] Using if, else statements

You might have found 'ifelse' in S Poetry, which
is one way of solving your problem.


Patrick Burns
[EMAIL PROTECTED]
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")

Robin Williams wrote:
Hi all,
Again I have searched the net and so on, without finding an answer to this
surely simple problem. A short bit of code would be appreciated.
  I have a object named `data' with the following column headings.

Date, maxitemp, minitemp, admissions, d.o.w.

Where d.o.w. is day of the week, written "Sun" "Mon" etc.

  I just need to scale the Monday admissions by 0.91, the Saturday
admissions by 1.21 and the Sunday admissions by 1.22. So basically what I
want is:

If d.o.w. == "Sat"
Multiply Sat admissions by 1.21.

(Now do I need an else statement here, or can I just do another)

If d.o.w. == "Sun"
Multiply "Sun" admissions by 1.22

(and finally)

If d.o.w. == "Mon" Multiply Monday admissions by 0.91. Else do nothing.
  I assume in my code I need to specify that I am using the data.frame
`data', so do I need to write things like If(data[d.o.w.]=="Mon")
  I would then like to round the new admissions to integers (I assume I
just
use round(data$admissions)), and output the new data to another csv file.
  I could of course do this in excel but I will need to extend this type
of
idea in the future so I would like to master it in R.
Many thanks for any help/code.

Robin Williams.

        [[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.

Reply via email to