[R] Imposing more than one condition to if

Rui Barradas ruipbarradas at sapo.pt
Sun Jul 15 19:21:01 CEST 2012


Hello,

There are obvious bugs in your code, you are testing for light > 2 or 
ligth < 2 but this would mean that dusk and dawn are undetermined for 
light == 2 and that they happen at light == 1.

Without loops or compound logical conditions:


f <- function(x){
	x$dawn <- x$time[ which.min(x$light) ]
	x$dusk <- x$time[ max(which(x$light == 0)) + 1 ]
	x
}

do.call(rbind, by(d, d$day, f))

Hope this helps,

Rui Barradas

Em 15-07-2012 17:32, Santiago Guallar escreveu:
> Hi,
>
> I have a dataset which contains several time records for a number of days, plus a variable (light) that allows to determine night time (lihgt= 0) and daytime (light> 0). I need to obtain get dusk time and dawn time for each day and place them in two columns.
>
> This is the starting point (d):
> day time light
> 1     1       20
> 1     12     10
> 1     11     6
> 1     9       0
> 1     6       0
> 1     12     0
> ...
> 30     8     0
> 30     3     0
> 30     8     0
> 30     3     0
> 30     8     8
> 30     9     20
>
>
> And this what I want to get:
> day time light dusk dawn
> 1     1      20     11     10
> 1     12    10     11     10
> 1     11     6      11     10
> 1     9       0      11     10
> 1     6       0      11     10
> 1     12     0      11     10
> ...
> 30     8     0       9     5
> 30     3     0       9     5
> 30     8     0       9     5
> 30     3     0       9     5
> 30     8     8       9     5
> 30     9     20     9     5
>
> This is the code for data frame d:
> day= rep(1:30, each=10)
> n= length(dia); x= c(1:24)
> time= sample(x, 300, replace= T)
> light= rep(c(20,10,6,0,0,0,0,0,8,20), 30)
> d=data.frame(day,time,light)
>
> I'd need to impose a double condition like the next but if does not take more than one:
> attach(d)
> for (i in 1: n){
> if (light[i-1]>2 & light[i]<2){
> d$dusk<- time[i-1]
> }
> if (light[i-1]<2 & light[i]>2){
> d$dawn<- time[i]
> }
> }
> detach(d)
> d
>
> Thank you for your help
> 	[[alternative HTML version deleted]]
>
>
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list