У меня есть наблюдения за животными на разных стадиях (т. Е. Стадия 0 - стадия 4).На некоторых этапах у меня есть более одного наблюдения за этап (например, этап 0–47 дней и этап 0–50 дней).Это означает, что животное было замечено на стадии 0 в день 47 и на стадии 0 в день 50. Но другие стадии можно наблюдать только один раз (например, стадия 1 - 57 дней).Мой код гласит, что если существует более одного наблюдения за этапом, используйте определенный код, а если есть только одно наблюдение, используйте другой конкретный код.Но по какой-то причине стадия 0 также включена в код только с одним наблюдением, хотя мы явно имеем более одного наблюдения за этой стадией.
Я думаю, что мое условие if в моем коде может быть неправильным, но я не могу найти какой-либо альтернативный код для использования.
> 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(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(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
Вывод, который я получаю из кода для этапа 0, когда этап 1 - 57 днейКод дает мне результаты для первого кода, где я фактически заявляю, что он не должен использовать код, потому что у меня более одного наблюдения.Выходные данные тогда - 10 и 7 (рядом друг с другом, что портит мою таблицу результатов в конце), но у меня не должно быть вывода для кода.В то время как для второй части, где я заявляю, что код должен быть использован, выходной результат дается как 10, что является правильным.
Ожидаемый результат должен быть просто:
> Diff0
[1] 0
> Diff_0
[1] 10