短版本:执行以下命令时qtm(countries, "freq")
我收到以下错误消息:
$<-.data.frame
中的错误(*tmp*
,&#34; SHAPE_AREAS&#34;,value = c(652270.070308042,:替换有177行,数据有210
免责声明:我已经检查了其他答案,例如this one或this 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")
答案 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")