我正在查看此链接中的示例代码。
http://www.milanor.net/blog/maps-in-r-plotting-data-points-on-a-map/
似乎数据集位置有变化,所以我稍微改变了我的代码以适应。
airports <- read.delim("https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat", sep=",")
colnames(airports) <- c("ID", "name", "city", "country", "IATA_FAA", "ICAO", "lat", "lon", "altitude", "timezone", "DST")
head(airports)
library(rworldmap)
newmap <- getMap(resolution = "low")
plot(newmap, xlim = c(-20, 59), ylim = c(35, 71), asp = 1)
points(airports$lon, airports$lat, col = "red", cex = .6)
routes <- read.csv("https://raw.githubusercontent.com/jpatokal/openflights/master/data/routes.dat", header=F)
colnames(routes) <- c("airline", "airlineID", "sourceAirport", "sourceAirportID", "destinationAirport", "destinationAirportID", "codeshare", "stops", "equipment")
head(routes)
library(plyr)
departures <- ddply(routes, .(sourceAirportID), "nrow")
names(departures)[2] <- "flights"
arrivals <- ddply(routes, .(destinationAirportID), "nrow")
names(arrivals)[2] <- "flights"
所有这一切似乎都很好。下面的代码似乎已关闭,但我不确定原因。
airportD <- merge(airports, departures, by.x = "ID", by.y = "sourceAirportID")
airportA <- merge(airports, arrivals, by.x = "ID", by.y = "destinationAirportID")
我收到此错误:
警告讯息: 在merge.data.frame(机场,离境,by.x = &#34; ID&#34;,by.y =&#34; sourceAirportID&#34;):列名'NA','NA'是 在结果中重复
警告讯息: 在merge.data.frame(机场,到达,by.x =&#34; ID&#34;,by.y = &#34; destinationAirportID&#34;):列名称'NA','NA'重复 结果
我做错了什么?
答案 0 :(得分:1)
首先,这些只是警告,而不是错误。也就是说,一切仍然有效,但也许不是预期的。问题来自
colnames(airports) <- c("ID", "name", "city", "country", "IATA_FAA", "ICAO", "lat", "lon", "altitude", "timezone", "DST")
您只指定了11个列名,而有14列。因此,三列名为NA
,这是merge
的潜在问题。
如果结果(即airportD
和airportA
)符合预期,则无需更改任何内容。不过,建议为这三列提供正确的列名。