1

現在、CHIRPS データベースからメキシコの降雨データを抽出しようとしています。目標は、15 年間にわたる月間降雨量の包括的なデータベースを取得することです。これには、特定の月の気象条件に関する情報を含む .tif ファイルからデータを抽出した後、多数の列をマージすることが含まれます。
CVE_ENT と CVE_MUN は、後で個々の自治体を識別するのに役立つ 2 つの変数です。

R でコードを実行し、結果のデータ フレームを見ると、すべて問題ないように見えます。しかし、それを抽出して .dta または .csv ファイルにしようとするとすぐに、次のエラー メッセージが表示 されます。 csv") : 列 4 の長さ (1) が列 1 の長さ (2456) と同じではありません

write.dta を使用している場合など、他の複数のシナリオでエラーが発生します。

私が見逃していることを知っている人はいますか?よろしくお願いします。

#Data get methods#
tif.raster1 <- raster('chirps-v2.0.1999.01.tif')
crs.LL <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84" 
tif.raster1 <- projectRaster(tif.raster1, crs = crs.LL)
mexico2shp <- readOGR(dsn='GIS Mexican Municipalities', layer='Mexican      Municipalities')
tif.raster1 <- crop(tif.raster1, extent(mexico2shp))
vras.tif1 <- velox(tif.raster1)
iters <- nrow(mexico2shp)
#mapping function#
vextractall <- vras.tif1$extract(mexico2shp, fun=mean)
mexicomm <- as.data.frame(mexico2shp)
vextractall <- as.data.frame(vextractall)
iters <- nrow(mexico2shp)
x <- foreach(a=1:iters) %do% {
if(is.na(vextractall[a,1])) {
 ext <- raster::extract(tif.raster1, mexico2shp[a,], fun=mean)
 vextractall[a,1] <- ext[1,1]
 }
}
vextractall<-as.data.frame(vextractall)
vextractall$CVE_ENT <- mexicomm[,c("CVE_ENT")]
vextractall$CVE_MUN <- mexicomm[,c("CVE_MUN")]
vextractall<-vextractall[,c(ncol(vextractall), 1:(ncol(vextractall)-1))]
vextractall<-vextractall[,c(ncol(vextractall), 1:(ncol(vextractall)-1))]
vextractall <- plyr::rename(vextractall, c("V1"="Milimeters011999"))

tif.raster1 <- raster('chirps-v2.0.1999.02.tif')
tif.raster1 <- crop(tif.raster1, extent(mexico2shp))
vras.tif1 <- velox(tif.raster1)
crs.LL <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84" 
tif.raster1 <- projectRaster(tif.raster1, crs = crs.LL)
vextract2 <- vras.tif1$extract(mexico2shp, fun=mean)
vextract2 <- as.data.frame(vextract2)
iters <- nrow(mexico2shp)
foreach(a=1:iters) %do% {
if(is.na(vextract2[a,1])) {
ext <- raster::extract(tif.raster1, mexico2shp[a,], fun=mean)
vextract2[a,1] <- ext[1,1]
}
 }
vextractall<-as.data.frame(vextractall)
vextract2<-as.data.frame(vextract2)
vextractall$Milimeters021999 <- vextract2
4

0 に答える 0