My data frame shows changes on the variable act which records the consecutive 
duration (in seconds) of two states (wet-dry) over a few days for several 
individuals (identified by Ring). Since I want to work with daytime (i.e. from 
dawn till dusk) and night time (i.e. from dusk till next dawn), I have to split 
act in two: from time[i] till dusk and from dusk until time[i+1], and from 
time[k] till dawn and from dawn until time[k+1].
Example:

ith row: 01-01-2000 20:55:00 act= 360 seconds

i+1th row: 01-01-2000 21:01:00 act= 30 seconds # say that dusk= 21:00

i+2th row: 01-01-2000 21:01:30 act= 30 seconds

.

.
.
My goal is to get:

ith row: 01-01-2000 20:55:00 act= 300 seconds # modified row

i+1th row: 01-01-2000 21:00:00 act= 60 seconds # new row

i+2th row: 01-01-2000 00:01:00 act= 30 seconds # previously row i+1th

i+3th row: 01-01-2000 00:01:30 act= 30 seconds # previously row i+2th

.

.
.
I attach a dput with a selection of my data. Here's a piece of code that I am 
trying to run only for the daytime/night time change:

  xandn <- ddply( xan, .(Ring), function(df1){
  # índex of daytime/night time changes
  ind <- c( FALSE, diff( as.POSIXlt( df1$timepos, df1$dusk ) ) > 0 )
  add <- df1[ind,]
  add$timepos <- add$timepos - add$dusk
  # append and arrange rows
  df1 <- rbind( df1, add )
  df1 <- df1[order(df1$timepos),]
  # recalculation of act
  df1$act2 <- c( diff( as.numeric(df1$timepos) ), NA )
  df1} )

I get the following error message:
"Error in diff(as.POSIXlt(df1$timepos, df1$dusk)): error in evaluating the 
argument 'x' in selecting a method for function 'diff': Error in 
as.POSIXlt.POSIXct (df1$timepos, df1$dusk):   invalid 'tz' value"

Thank you for your hep,

Santi
______________________________________________
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