У меня есть набор данных по демографии растений за 5 лет на 10 участках, в общей сложности 37 участков на этих участках. Ниже приведена ссылка на GoogleDoc с некоторыми данными:
https://docs.google.com/spreadsheets/d/1VT-dDrTwG8wHBNx7eW4BtXH5wqesnIDwKTdK61xsD0U/edit?usp=sharing
Всего у меня 101 уникальная комбинация.
Мне нужно установить подмножество каждого уникального набора данных, чтобы я мог выполнить каждый через некоторый код. Этот код даст мне один столбец вывода, который мне нужно добавить обратно в исходный фрейм данных, чтобы я мог запустить LM для всего набора данных. Я надеялся написать цикл for, в котором я мог бы поднаборить каждую уникальную комбинацию, выполнить код для каждой из них, а затем добавить выходные данные для каждой модели обратно в исходный набор данных. Все мои попытки написать цикл подмножества не привели даже к простому выводу.
Я создал колонку «SiteTY» с уникальными комбинациями «Сайт», «Трансект», «Год». Таким образом, «PWR 832015» - это сайт PWR Transect 83 год 2015. Я попытался использовать это для циклического прохождения и заполнения пустой матрицы в качестве доказательства концепции.
transect=unique(dat$SiteTY)
ntrans=length(transect)
tmpout=matrix(NA, nrow=ntrans, ncol=2)
for (i in 1:ntrans) {
df=subset(dat, SiteTY==i)
tmpout[i,]=(unique(df$SiteTY))
}
Когда я делаю это, я замечаю, что у df нет наблюдений. Если я заменю «i» на известное значение (например, PWR 832015) и выполню каждую строку цикла for отдельно, он будет заполнен правильно. Если я использую is.factor () для i или PWR 832015, оба возвращают FALSE.
Этот конкретный код также дает мне ошибку:
Ошибка в [,-
(*tmp*
,, i, значение = среднее значение (df $ Year)): индекс вне границ
Я могу только предположить, что это происходит, потому что кадр данных пуст.
Я прочитал достаточно сообщений SO, чтобы знать, что циклы for сложны, но я пробовал больше итераций, чем я могу вспомнить, чтобы попытаться сделать эту работу за последние 3 года безрезультатно.
Буду признателен за любые подсказки о петлях или способах их избежать при получении нужного мне результата.