try this:

> set.seed(1)
> day= rep(1:30, each=10)
> n= length(day); 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)
>
> # create a dawn/dusk column to mark where it happens
> d$dawn <- c(FALSE, (head(d$light, -1) < 2) & (tail(d$light, -1) > 2))
> d$dusk <- c((head(d$light, -1) > 2) & (tail(d$light, -1) < 2), FALSE)
>
> # now split and recombine to get the values for the day
> result <- do.call(rbind, lapply(split(d, d$day), function(.day){
+     # create new dataframe with the values
+     cbind(.day[, c('day', 'time', 'light')]
+         , dawn = .day$time[.day$dawn]
+         , dusk = .day$time[.day$dusk]
+         )
+ }))
>
>
>
> result
       day time light dawn dusk
1.1      1    7    20   16   14
1.2      1    9    10   16   14
1.3      1   14     6   16   14
1.4      1   22     0   16   14
1.5      1    5     0   16   14
1.6      1   22     0   16   14
1.7      1   23     0   16   14
1.8      1   16     0   16   14
1.9      1   16     8   16   14
1.10     1    2    20   16   14
2.11     2    5    20   10   17
2.12     2    5    10   10   17
2.13     2   17     6   10   17
2.14     2   10     0   10   17
2.15     2   19     0   10   17
2.16     2   12     0   10   17
2.17     2   18     0   10   17
2.18     2   24     0   10   17
2.19     2   10     8   10   17
2.20     2   19    20   10   17
3.21     3   23    20   21   16
3.22     3    6    10   21   16
3.23     3   16     6   21   16
3.24     3    4     0   21   16
3.25     3    7     0   21   16
3.26     3   10     0   21   16
3.27     3    1     0   21   16
3.28     3   10     0   21   16
3.29     3   21     8   21   16
3.30     3    9    20   21   16
4.31     4   12    20   18   12
4.32     4   15    10   18   12
4.33     4   12     6   18   12
4.34     4    5     0   18   12
4.35     4   20     0   18   12
4.36     4   17     0   18   12
4.37     4   20     0   18   12
4.38     4    3     0   18   12
4.39     4   18     8   18   12
4.40     4   10    20   18   12




On Sun, Jul 15, 2012 at 12:32 PM, Santiago Guallar <sgual...@yahoo.com> wrote:
> 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@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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

______________________________________________
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