Я пытаюсь рассчитать рост диаметра набора деревьев в течение нескольких лет в кадре данных, в котором каждая строка является данным деревом в течение данного года. Как правило, такие данные имеют каждый отдельный стержень в виде одной строки с диаметром этого ствола для каждого года, указанным в отдельной колонке, но по разным причинам этот информационный кадр должен оставаться таким, чтобы каждый ряд был отдельным стержнем в течение одного года. Упрощенная версия модели данных будет выглядеть следующим образомРасчет роста дерева с использованием цикла
df<-data.frame("Stem"=c(1:5,1:5,1,2,3,5,1,2,3,5,6),
"Year"=c(rep(1997,5), rep(1998,5), rep(1999,4), rep(2000,5)),
"Diameter"=c(1:5,seq(1.5,5.5,1),2,3,4,6,3,5,7,9,15))
df
Stem Year DAP
1 1 1997 1.0
2 2 1997 2.0
3 3 1997 3.0
4 4 1997 4.0
5 5 1997 5.0
6 1 1998 1.5
7 2 1998 2.5
8 3 1998 3.5
9 4 1998 4.5
10 5 1998 5.5
11 1 1999 2.0
12 2 1999 3.0
13 3 1999 4.0
14 5 1999 6.0
15 1 2000 3.0
16 2 2000 5.0
17 3 2000 7.0
18 5 2000 9.0
19 6 2000 15.0
То, что я пытаюсь сделать это, чтобы сделать новый столбец, который принимает диаметр для данного ствола в данном году, и вычитает диаметр для того же ствола в прошлом году. Я предполагаю, что для этого потребуется некоторый набор вложенных циклов. Что-то вроде
for (i in 1:length(unique(df$Stem_ID){
for (t in 2:length(unique(df$Year){
.....
}
}
Что я борюсь с как написать функцию, которая вычисляет: Диаметр [т] -Диаметр [т-1] для каждого ствола. Любые предложения будут ценны.
Это сделало именно то, что мне было нужно для этого. Это гораздо более элегантный способ сделать это, чем я имел в виду. Спасибо, так много! – Ben
не забудьте принять его ответ, если он вам приемлем! – jed