处理R绘制的Choropleth映射中的缺失值

时间:2019-07-01 21:43:03

标签: r-plotly

使用跨越几个不同国家的时间序列数据集。我的数据集中有许多隐含的缺失值,因为某些国家(美国)在我们的国家开始之前就已经收集了数据。这些遗漏的问题引发了一个错误,“忽略680个观察错误,其中(idx)[[1]]:下标超出范围”。

对我来说很清楚,这些隐性缺失的观察是问题所在。我已经将它们转换为明显的缺失观测值,并且错误仍然存​​在,但是当我将其转换为零时,总体上可以获得期望的结果。显然这与我的配色方案不符,是一种误导,我更希望在没有数据的情况下将国家留为空白。

相关代码:


# Create the Plotly map
l <- list(color = toRGB("grey95"), width = 0.5)

# specify map projection/options
g <- list(
  showframe = FALSE,
  showcoastlines = FALSE,
  projection = list(type = 'equirectangular', scale  = 0.8),
  scope = "world", 
  showcountries = TRUE,
  countrycolor = toRGB("#D4D0C8FF"),
  showocean = TRUE,
  oceancolor = toRGB("#F0F8FF")
)

# Add in the actual data
p <- plot_geo(frame = ~dateq, data = data2) %>%

    add_trace( type = "choropleth",
    name = "Credit All", z = ~Credit_Firms_all, color = ~Credit_Firms_all, colors = colors_exact,
    text = ~country, locationmode = "ISO-3", locations = ~code,  marker = list(line = l)
  )  %>%

  layout(
    title = "<br><br><br>",
    geo = g
  ) %>%  

 colorbar(title = 'Credit All', x = 1, y = 0.9, limits = c(-1,1), len = 0.8) %>%   

animation_opts(frame = 1, redraw = FALSE)


p

不幸的是,我无法共享我的数据,但是如果有帮助,我将尝试简要说明。约1400个观察结果,共4列。国家(德国),代码(DEU),Credit_Firms_All(5),dateq(2019年第二季度)。国家和代码是字符,dateq是从1982年第二季度到2019年第二季度的每一年和每个季度组合的水平的因子,而Credit_Firms_All是我希望对地图进行底纹处理的数值。我注意到的一件事是,“ NA”不是dateq中的级别之一,但是我不知道这是否是一个问题。

我希望输出结果是一张基于当前dateq值将国家/地区与国家/地区隔离为不同颜色的地图,而缺失的数据则显示为白色/空白,但是我却遇到了上面的错误,我不知道如何调试。

0 个答案:

没有答案
相关问题