我正在尝试绘制挪威的熊群,但我正在使用我的脚本遇到一些问题。 在尝试转换为kml时,我不断收到通知,告知我的数据包含NA值。 我尝试过na.omit,但这只会因某种原因破坏我的数据框架。我在网上搜索并尝试了所有我遇到过的事情,但都没有成功。
那里有谁可以帮助我?
脚本有些文字是挪威文,只是看过去
library("dismo")
library("maps")
library("raster")
library("rgdal")
library("XML")
gbif('Ursus', 'arctos', download= FALSE) #sjekker datasettet for antall registreringer av U.arctos
bjorn <-gbif('Ursus', 'arctos', download= TRUE) #laster ned datasettet fra GBIF
summary(bjorn) #dataene gaar fra 1833 til 2015, med median i 1957 og gjennomsnitt i 1953 (alts?? flest m??linger p?? 50-tallet)
str(bjorn) #7860 registreringer
latbjorn<-(bjorn$lat)
sum(is.na(bjorn$lat)) #4906 registreringer har NA-verdi paa latitude og longitude
longbjorn <-(bjorn$lon)
sum(is.na(bjorn$lon))
land<-table(bjorn$country)
land
norge<- subset(bjorn, country == "Norway", (!is.na(lat+lon)))
summary(norge) #111 verdier registrert
sum(is.na(norge$lat))
sum(is.na(norge$lon)) #35 NA-verdier for latitude og longitude
norgelon<-data.frame(na.omit(norge$lon))
norgelat<-data.frame(na.omit(norge$lat))
par(mfrow=c(1,2))
hist(norge$lon, xlab="Lengdegrad", ylab="Antall registrerte Ursus arctos", main="Antall bj??rn registrert per lengdegrad", col= "red")
hist(norge$lat, xlab="Breddegrad", ylab="Antall registrerte Ursus arctos", main="Antall bj??rn registrert per breddegrad", col= "light blue")
norge2<-merge(norgelat, norgelon)
norge2
summary(norge2)
par(mfrow=c(1,1))
map("world")
points(bjorn$lon,bjorn$lat,col="red", pch= 4)
points(norge$lon,norge$lat,col="green", pch= 4)
library("raster")
norgeplot<-getData('GADM',country='NOR',level=0)
plot(norgeplot)
points(norge$lon,norge$lat,col="red",pch=4)
norgeplot2<-getData('GADM',country='NOR',level=1)
plot(norgeplot2)
class(norgeplot)
nor.alt<-getData('alt',country='NOR',mask=T)
class(nor.alt)
plot(nor.alt)
points(norge$lon,norge$lat,col="red",pch=4)
z<-extract(nor.alt,norge[,c("lon","lat")])
summary(z)
par(mar=c(5,6,4,2))
hist(z,col="orange",xlab="Meter over havet",ylab="Frekvens",main="Fordeling av individer p?? moh.")
library(rgdal)
GEO.WGS84<-CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
norge.sp<-SpatialPointsDataFrame(norge[,c("lon","lat")],norge,proj4string=GEO.WGS84)
writeOGR(norge.sp,"my.pet.kml","Ursus arctos",driver="KML")
答案 0 :(得分:1)
在列上单独使用na.omit
将忽略NA
个值。但请考虑一下这里发生的事情:
lat lon
1 NA
NA 2
结果norge2
会是什么样的?
lat lon
1 2
......不是我们想要的。相反,请使用complete.cases
:
norge2 = complete.cases(norge)
这将省略任何列为NA
的所有行。
答案 1 :(得分:1)
这是你的脚本,修复和简化(使它变得更加教学)。
library("dismo")
library("maps")
library("rgdal")
bjorn <-gbif('Ursus', 'arctos', download= TRUE)
# This is how you can remove records with missing coordinates
bjorn <- bjorn[!is.na(bjorn$lat) & !is.na(bjorn$lon), ]
dim(bjorn)
norge <- subset(bjorn, country == "Norway")
par(mfrow=c(1,2))
hist(norge$lon, xlab="Lengdegrad", ylab="Antall registrerte Ursus arctos", main="Antall bjorn registrert per lengdegrad", col= "red")
hist(norge$lat, xlab="Breddegrad", ylab="Antall registrerte Ursus arctos", main="Antall bjorn registrert per breddegrad", col= "light blue")
par(mfrow=c(1,1))
map("world")
points(bjorn$lon,bjorn$lat,col="red", pch= 4)
points(norge$lon,norge$lat,col="green", pch= 4)
norgeplot <- getData('GADM',country='NOR', level=0)
norgeplot2<-getData('GADM', country='NOR', level=1)
plot(norgeplot)
points(norge$lon,norge$lat,col="red",pch=4)
nor.alt<-getData('alt',country='NOR')
plot(nor.alt)
plot(norgeplot2, add=TRUE)
points(norge$lon,norge$lat, col="red", pch=20)
z <- extract(nor.alt, norge[,c("lon","lat")])
par(mar=c(5,6,4,2))
hist(z,col="orange",xlab="Meter over havet",ylab="Frekvens",main="Fordeling av individer p?? moh.")
library(rgdal)
GEO.WGS84 <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
norge.sp <- SpatialPointsDataFrame(norge[,c("lon","lat")],norge,proj4string=GEO.WGS84)
writeOGR(norge.sp, "my.pet.kml", "Ursus arctos", driver="KML")