R - Добавление рассчитанных значений в матрицу - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выяснить, как добавить вычисленные средние значения из большого набора данных и представить его в матрице 49681 X 25 в R. 49 681 представляет определенные c местоположения, в то время как 25 представляет годы. Код, который я написал ниже, предназначен для l oop (начиная с 1 и go до 49 681), чтобы вычислить среднегодовое значение данных для всех местоположений. В год делается 24 наблюдения. Кроме того, каждое значение данных находится в диапазоне от 0 до 1000. Таким образом, среднее значение 1 местоположения в данном году может быть 568. Другое местоположение в данном году может быть 346.

for(I in 1:49681){

mean(as.numeric(veg.data[i,4:27])) # NDVI averages for 1982 (All sites) mean(as.numeric(veg.data[i,28:51])) # NDVI averages for 1983 (All sites) mean(as.numeric(veg.data[i,52:75])) # NDVI averages for 1984 (All sites) mean(as.numeric(veg.data[i,76:99])) # NDVI averages for 1985 (All sites) mean(as.numeric(veg.data[i,100:123])) # NDVI averages for 1986 (All sites) mean(as.numeric(veg.data[i,124:147])) # NDVI averages for 1987 (All sites) mean(as.numeric(veg.data[i,148:171])) # NDVI averages for 1988 (All sites) mean(as.numeric(veg.data[i,172:195])) # NDVI averages for 1989 (All sites) mean(as.numeric(veg.data[i,196:219])) # NDVI averages for 1990 (All sites) mean(as.numeric(veg.data[I,220:243])) # NDVI averages for 1991 (All sites) mean(as.numeric(veg.data[i,244:267])) # NDVI averages for 1992 (All sites) mean(as.numeric(veg.data[i,268:291])) # NDVI averages for 1993 (All sites) mean(as.numeric(veg.data[i,292:315])) # NDVI averages for 1994 (All sites) mean(as.numeric(veg.data[i,316:339])) # NDVI averages for 1995 (All sites) mean(as.numeric(veg.data[i,340:363])) # NDVI averages for 1996 (All sites) mean(as.numeric(veg.data[i,364:387])) # NDVI averages for 1997 (All sites) mean(as.numeric(veg.data[i,388:411])) # NDVI averages for 1998 (All sites) mean(as.numeric(veg.data[i,412:435])) # NDVI averages for 1999 (All sites) mean(as.numeric(veg.data[i,436:459])) # NDVI averages for 2000 (All sites) mean(as.numeric(veg.data[i,460:483])) # NDVI averages for 2001 (All sites) mean(as.numeric(veg.data[i,484:507])) # NDVI averages for 2002 (All sites) mean(as.numeric(veg.data[i,508:531])) # NDVI averages for 2003 (All sites) mean(as.numeric(veg.data[i,532:555])) # NDVI averages for 2004 (All sites) mean(as.numeric(veg.data[i,556:579])) # NDVI averages for 2005 (All sites) mean(as.numeric(veg.data[i,580:603])) # NDVI averages for 2006 (All sites) }

После того, как я вычислю все годовые средства для всех 49 681 сайтов, я Я пытаюсь поместить их в матрицу 49 681 х 25. Однако у меня проблемы с получением средств в матрице. Я создал пустую матрицу со всеми нулями ниже, но как я могу заменить их вычисленными средними значениями для каждого местоположения?

yearly.avgs <- matrix(c(rep(0,49681*25)), nrows=49681, ncol=25)
View(yearly.avgs)

1 Ответ

1 голос
/ 13 апреля 2020

Мы могли бы split набор данных с помощью переменной группировки и затем использовать rowMeans

tmp <- veg.data[4:603]
out <- sapply(split.default(tmp, as.integer(gl(ncol(tmp), 23, 
         ncol(tmp)))), rowMeans, na.rm = TRUE)

ПРИМЕЧАНИЕ. Здесь предполагается, что 'veg.data' является data.frame

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...