Tmap错误 - 替换有[x]行,数据有[y]

时间:2017-09-19 10:26:13

标签: r tmap

短版本:执行以下命令时qtm(countries, "freq")我收到以下错误消息:

  

$<-.data.frame中的错误(*tmp*,&#34; SHAPE_AREAS&#34;,value =   c(652270.070308042,:替换有177行,数据有210

免责声明:我已经检查了其他答案,例如this onethis one以及this explanation,其中指出通常此错误来自拼写错误的对象,但找不到我的问题的答案。

可重现的代码:

library(rgdal)
library(dplyr)
library(tmap)

# Load JSON file with countries.
countries = readOGR(dsn = "https://gist.githubusercontent.com/ccamara/fc26d8bb7e777488b446fbaad1e6ea63/raw/a6f69b6c3b4a75b02858e966b9d36c85982cbd32/countries.geojson")

# Load dataframe.
df = read.csv("https://gist.githubusercontent.com/ccamara/fc26d8bb7e777488b446fbaad1e6ea63/raw/754ea37e4aba1b7ed88eaebd2c75fd4afcc54c51/sample-dataframe.csv")


countries@data = left_join(countries@data, df, by = c("iso_a2" = "country_code"))

qtm(countries, "freq")

1 个答案:

答案 0 :(得分:1)

您的错误在数据中 - 代码正常运行。

你现在正在做的是:

1)尝试1:1比赛

2)意识到你的.csv数据包含几个要匹配的ID

3)左连接然后将左侧与右侧的所有匹配相乘

要避免此问题,您必须再次汇总数据,如:

library(dplyr)

df_unique = df %>%
    group_by(country_code, country_name) %>%
    summarize(total = sum(total), freq = sum(freq))


#after that you should be fine - as long as just adding up the data is okay.
countries@data = left_join(countries@data, df, by = c("iso_a2" = 
"country_code"))

qtm(countries, "freq")