짧은 버전 : 다음 명령 qtm(World, "amount")
을 실행할 때 다음과 같은 오류 메시지가 :Spatial 데이터를 Dataframe과 결합하여 Tmap으로 표시 할 수 있습니까?
Error in
$<-.data.frame
(*tmp*
, "SHAPE_AREAS", value = c(653989.801201595, : replacement has 177 rows, data has 175
면책 조항 :이 내가 this question에 가지고하는 데 사용되는 동일한 문제이지만, 내가 잘못 아니에요 경우 그 중 하나는 문제는 오른쪽 데이터 프레임에 여러 변수와 일치하는 왼쪽 데이터 프레임에 하나의 변수가 있었기 때문에 올바른 데이터 프레임에 변수를 그룹화해야했습니다. 아래의 코드에서 볼 수 있듯이이 경우, 나는, 나도 같은 문제가 발생하지 않는다는 것을 확신 :
library(tmap)
library(tidyr)
# Read tmap's world map.
data("World")
# Load my dataframe.
df = read.csv("https://gist.githubusercontent.com/ccamara/ad106eda807f710a6f331084ea091513/raw/dc9b51bfc73f09610f199a5a3267621874606aec/tmap.sample.dataframe.csv",
na = "")
# Compare the countries in df that do not match with World's
# SpatialPolygons.
df$iso_a3 %in% World$iso_a3
# Return rows which do not match
selected.countries = df$iso_a3[!df$iso_a3 %in% World$iso_a3]
df.f = filter(df, !(iso_a3 %in% selected.countries))
# Verification.
df.f$iso_a3[!df.f$iso_a3 %in% World$iso_a3]
[email protected] = [email protected] %>%
left_join(df.f, by = "iso_a3") %>%
mutate(iso_a3 = as.factor(iso_a3)) %>%
filter(complete.cases(iso_a3))
qtm(World, "amount")
내 생각 엔 단서가 열 내가 사용하고 있다는 사실이 될 수 있다는 것이다 두 데이터 프레임을 합치면 서로 다른 레벨을 갖기 때문에 (문자열로 변환됩니다), 나는 아직도 내가 여기에있는 오류를 이해하지 못한다는 것을 인정하는 것을 부끄럽게 생각합니다. 나는 심지어 작은 dataframe 작동하지 않았다는 것을 인정해야하지만 나는 내 dataframe에 문제가 있으리라 믿고있어 :
selected.countries2 = c("USA", "FRA", "ITA", "ESP")
df.f2 = filter(df, iso_a3 %in% selected.countries2)
df.f2$iso_a3 = droplevels(df.f2$iso_a3)
[email protected] = [email protected] %>%
left_join(df.f2, by = "iso_a3") %>%
mutate(iso_a3 = as.factor(iso_a3)) %>%
filter(complete.cases(iso_a3))
World$iso_a3 = droplevels(World$iso_a3)
qtm(World, "amount")
이 가 가
사람이 오류를 일으키는 것을 지적 좀 도와 줄래 (AN 솔루션을 제공 또한 많은
답변 주셔서 감사합니다,하지만 이해하는 데 확실하지 : AFAIK'World'는'(세계 어떤 형상을 가진 대형 SpatialDataFrame입니다 @ 다각형 ')과 데이터 ('월드 @ 데이터 '). 내가하고 싶었던 것은 새로운 데이터를 다른 데이터 프레임에서 합쳐서'World @ data'에 추가하는 것입니다. 또한 코드를 실행할 때 '$ <- .data.frame' 오류 ('* tmp *', SHAPE_AREAS, value = c (653989.801201595, : 교체에는 177 개의 행, 데이터 178' – ccamara
내 교체를 참조하십시오. 게시하기 전에 귀하의 데이터를 확인하시기 바랍니다. 당신이 left_join을 할 때마다 data.frame 길이가 바뀌면 데이터에 문제가 있습니다. – Christian
DF를 확인했지만 분명히 여전히 몇 가지 문제가있었습니다. 나는'table' 명령을 알지 못합니다. 이것은 디버깅에 크게 도움이됩니다. – ccamara