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