I have observations of animals in different stages (i.e. stage 0 - stage 4). In some of the stages, I have more than one observation in a stage (e.g. Stage 0- 47 days and stage 0 - 50 days). This means that the animal was seen in stage 0 at day 47 and in stage 0 at day 50. But other stages may only be observed once (e.g. Stage 1 - 57 days). My code states that if there is more than one sighting of a stage use a specific code and if there is just one sighting, use another specific code. But for some reason, Stage 0 is also included in the code with only one observation although we clearly have more than one observation of that stage.
I think that my if condition statement in my code may be wrong, but I can't seem to find any alternative code to use.
> head(dat)
    SPENO       Date MoltStatus DaysfromOct01 SEASON
1 PG(1)67 2012/11/16          0            47   2012
2 PG(1)67 2012/11/19          0            50   2012
3 PG(1)67 2012/11/26          1            57   2012
4 PG(1)67 2012/12/05          2            66   2012
5 PG(1)67 2012/12/16          3            77   2012
6 PG(1)67 2012/12/22          4            83   2012
If we only have one observation of a specific stage:
if(length(Molt[Molt==0])=1){ #If there is just one sighting of molt code 0   
  Diff0=(Date[Molt==1])-(Date[Molt==0]) #just get the difference between stage 0 date and stage 1 date ---to get duration of stage 0
  Results=rbind(Results,c(SPENO[i],0,Diff0,(Date[Molt==0]),Season))
If we have more than one observation of a specific code:
if(length(Molt[Molt==0])>0&length(Molt[Molt==1])>0){ #If there is more than one sighting of molt code 0 
        First_0=min(Date[Molt==0]) #Calculate first 0 instance
        First_1=min(Date[Molt==1]) #Calculate first 1 instance
        Diff_0=First_1-First_0 #Calculate difference
        Results=rbind(Results,c(SPENO[i],0,Diff_0,First_0,Season)) 
      }
> Diff0
[1] 10  7
> Diff_0
[1] 10
The output I get from the code for stage 0 when stage 1 - 57 days: The code gives me results for the first code where I actually state that it should not use the code because I have more than one observation. The output is then 10 and 7 (next to each other, which messes up my results table at the end), but I should not have an output for the code. While for the second part where I state the code should be used, the output is given as 10, which is correct.
The expected output should just be:
> Diff0
[1] 0
> Diff_0
[1] 10
