강수량 변동 계수에 대해 지연 시간을 계산하고 실행하는 for 루프 문제가 있습니다. 나는 질문을 일반화하는 방법을 잘 모르겠다. 그래서 지금까지 모든 단계를 추가했다.R에 대한 루프의 시계열 지연 실행 R
내 주요 데이터 세트 "D"는 다음과 같습니다
row.names timestamp station year month ndvi landcover altitude precipitation
1 1 1 A 2000 jan 0.4138 Mixed forest 2143 16.0
2 1769 2 A 2000 feb 0.4396 Mixed forest 2143 4.0
나는 스테이션 당 연간 최대 NDVI에 강수량의 변동 계수의 지연 0시 10분의 효과를 발견하고 싶습니다. 는 기본적으로 내 코드는 다음과 같습니다
r <- aggr(d,c("station","landcover","year"), c("altitude=mean(altitude)","max.ndvi=NA","max.month=NA","max.timestamp=NA","max.precipitation=NA", "cv=NA"))
head(r)
station landcover year altitude max.ndvi max.month max.timestamp max.precipitation cv
1 A Mixed forest 2000 2143 NA NA NA NA NA
2 A Mixed forest 2001 2143 NA NA NA NA NA
for(i in 1:nrow(r)) {
tmp <- d[d$station==r$station[i] & d$year==r$year[i],]
idx <- which.max(tmp$ndvi);
r$max.month[i] <- as.character(tmp$month[idx]);
r$max.ndvi[i] <- tmp$ndvi[idx];
r$max.timestamp[i] <- tmp$timestamp[idx];
r$max.precipitation[i] <- tmp$precipitation[idx];
r$cv[i] <- sd(tmp$precipitation, na.rm = TRUE)/mean(tmp$precipitation, na.rm = TRUE)
}
for(lag in 0:10) {
cat("\n\n***** lag =",lag,"*****\n\n");
for(i in 1:nrow(r)) {
timestamp <- r$max.timestamp[i]-lag;
if(timestamp>0){
r$cv[i] <- r$cv[d$station==r$station[i] & d$timestamp==timestamp];
}
}
r <- na.omit(r)
print(summary(aov(max.ndvi~cv, data=r)));
for(lu in sort(unique(as.character(r$landcover)))) {
cat("\n----------------- Analysis for LU =",lu,"\n\n");
print(summary(aov(max.ndvi~cv,data=r[r$landcover==lu,])));
}
}
내가 무엇입니까 문제는/모든 max.ndvi 값에 대한 시차를 루프 할당 마지막 부분입니다. 토지 개폐 유형별 요약뿐만 아니라 모든 행에 대한 각 지연에 대한 요약을 원합니다.
나는 다양한 조합을 시도했지만 오류가 계속 발생합니다. 위의 코드에서이 오류가 발생합니다.
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
누구든지 조언을 제공 할 수 있습니까?
고마워요.
이 디버깅 문제가 더 있기 때문에, 당신은 또한 "코드 검토"스택 Exchange 사이트의 http://codereview.stackexchange.com/about을 살펴 수있는 정보 @Kevin에 대한 – kdauria
감사합니다, I 방금 거기에 게시했습니다. – user3460660
분명히 코드 검토에서는 "오프 주제"로 간주됩니다. 다른 누군가가 도와 주면 감사 할 것입니다! – user3460660