#r #for-loop #append #rbind
#r #for-цикл #добавить #rbind
Вопрос:
Мой цикл находит 20 лучших округов с наибольшей численностью за 10 разных лет для 35 видов птиц. Я создал цикл for, который дает мне фрейм данных с округом и численностью (два столбца с именем «y») для каждого года, и я хочу поместить это в больший фрейм данных для каждого из 10 лет, чтобы каждый вид в списке содержал 200 строк данных.
Я изо всех сил пытаюсь добавить фрейм данных одного года (y) к следующему по мере его прохождения. Я пробовал rbind
и append
, и он продолжает говорить, что у меня неправильные строки замены, или повторяет те же 20 строк по всему фрейму данных
for (i in 1:35) {
bbscounties[[i]]=as.data.frame(matrix(nrow=200, ncol=4))
colnames(bbscounties[[i]])=c("Species", "Year", "CountyGEOID", "Abundance")
}
for (i in 1:35) {
for(j in c(1992:1996,2013:2017)) {
sub=subset(species[[i]], Year==j)
for(k in 1:nrow(sub)) {
pt1=st_sfc(st_point(c(sub[k,]$Longitude, sub[k,]$Latitude)))
cnty1=extract.county(pt1, counties)
sub$County[k]=as.numeric(levels(cnty1$GEOID))[cnty1$GEOID]
y=rbind(y,y)
x=aggregate(sub$SpeciesTotal, by=list(County=sub$County), FUN=sum)
y=arrange(x, desc(x))[1:20,]
bbscounties[[i]][,1]=species[[i]]$AOU[1]
bbscounties[[i]][,2]=sub$Year[1]
bbscounties[[i]][,3]=y[,1]
bbscounties[[i]][,4]=y[,2]
}
}
}
``
head(species[[1]])
X CountryNum StateNum Route RouteDataID RPID Year AOU Count10 Count20 Count30 Count40 Count50 StopTotal SpeciesTotal Active Starttime
120 92256 840 14 103 6345387 101 2012 Aimophila_ruficeps 7 0 0 0 0 5 7 1 510
155 92291 840 14 103 6357807 101 2013 Aimophila_ruficeps 2 4 0 0 0 3 6 1 510
157 92293 840 14 103 6218217 101 1994 Aimophila_ruficeps 6 1 0 0 0 6 7 1 510
162 92298 840 14 103 6226712 101 1996 Aimophila_ruficeps 12 3 0 0 0 10 15 1 510
182 92318 840 14 103 6215329 101 1993 Aimophila_ruficeps 1 1 0 0 0 2 2 1 510
184 92320 840 14 103 6191824 101 1981 Aimophila_ruficeps 4 0 0 0 0 3 4 1 510
Latitude Longitude Stratum BCR LT RT RTD County
120 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
155 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
157 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
162 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
182 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
184 34.56753 -118.5573 92 32 - 1 - Roadside route 1 - Random, 50 Stops 205
nrow(species[[1]])
[1] 1992
extract.county=function(pt, counties){
pt = st_sfc(pt)
st_crs(pt)=st_crs(counties)
pt=st_sf(pt)
x=st_join(pt, counties)
}
bbscounties[[1]][1:50,]
Species Year CountyGEOID Abundance
1 Aimophila_ruficeps 1992 48243 44
2 Aimophila_ruficeps 1992 4023 39
3 Aimophila_ruficeps 1992 4019 20
4 Aimophila_ruficeps 1992 4003 16
5 Aimophila_ruficeps 1992 35047 13
6 Aimophila_ruficeps 1992 48209 12
7 Aimophila_ruficeps 1992 48259 12
8 Aimophila_ruficeps 1992 4007 11
9 Aimophila_ruficeps 1992 48137 10
10 Aimophila_ruficeps 1992 6053 7
11 Aimophila_ruficeps 1992 6017 5
12 Aimophila_ruficeps 1992 48463 5
13 Aimophila_ruficeps 1992 6037 3
14 Aimophila_ruficeps 1992 48413 3
15 Aimophila_ruficeps 1992 6083 2
16 Aimophila_ruficeps 1992 35029 2
17 Aimophila_ruficeps 1992 40075 2
18 Aimophila_ruficeps 1992 48377 2
19 Aimophila_ruficeps 1992 4012 1
20 Aimophila_ruficeps 1992 4013 1
21 Aimophila_ruficeps 1992 48243 44
22 Aimophila_ruficeps 1992 4023 39
23 Aimophila_ruficeps 1992 4019 20
24 Aimophila_ruficeps 1992 4003 16
25 Aimophila_ruficeps 1992 35047 13
26 Aimophila_ruficeps 1992 48209 12
27 Aimophila_ruficeps 1992 48259 12
28 Aimophila_ruficeps 1992 4007 11
Комментарии:
1. Не хватает нескольких фрагментов информации: как
species
выглядит? Каковы функцииst_sfc
иextract.county
? И как должен выглядеть ваш конечный результат?2. Извините за это, спасибо, что указали на эти вещи! Я добавил эту информацию, st_sfc является частью пакета sf для установки класса