Delia,
name <- data.frame(Behavior=c(1, 2, 1, 2, 1), Time=c(0, 40, 45, 55, 57))
appear <- name$Time[name$Behavior==1]
disappear <- name$Time[name$Behavior==2]
if(length(appear) > length(disappear)) disappear <- c(disappear, 60)
sum(disappear - appear)
Delia Shelton wrote on 04/09/2012 12:30:23 PM:
> Hi,
>
> I am attempting to tabulate binned data. The '1' represents the
> appearance of the focal mouse pup, and '2' represents the
> disappearance of the focal mouse pup. The code written below is
> intended to calculate the total time spent appeared out of 3600s.
> For Sample 1, both the hand calculation and R code yield the same
> result, 50. A problem seems to occur when '1' is the last entry.
For
> Sample 2, the total time appeared is 53 (hand calculation),
> however, using the R code below yields 55. If you have any
> suggestions for solving the problem, please let me know.
>
> Thank you in advance for any assistance you may provide.
>
> Delia
>
>
> Sample 1
>
> 0.0 1
> 40 2
> 45 1
> 55 2
>
>
> Sample 2
>
> 0.0 1
> 40 2
> 45 1
> 55 2
> 57 1
>
>
>
> name = read.table(file.choose(),header=F) # opening a data file
> colnames(name)<-c("Time", "Behavior")
> name = data.frame(name$Behavior, name$Time)
> colnames(name)<-c("Behavior", "Time")
> name<-name[name$Time < 3600, ];
>
> ## run file
>
> x<-seq(0,3600, by = 60) # total time partition by time which is 60
>
> if (tail(name$Behavior, 1) == 1) {name<-rbind(name, c(4, 3600))} else
> {name<-rbind(name, c(1, 3600))}
>
> if (nrow(name) %% 2 != 0)
> {name <-name[-c(nrow(name)), -c(nrow(name))]}
>
> q<-NULL
> for (y in (1: nrow(name)))
> {
> if (y %% 2 != 0)
> q<-c(q, (c(name$Time[y]:name$Time[y +1])))
> }
>
> b<-table(cut(q,x))
>
> sum(b)
[[alternative HTML version deleted]]