0

我正在分析 R 中 Limesurvey 问卷中的一些数据。其中一个调查问题询问人们他们的原籍国,并使用带有国家列表的下拉列表。我为此创建了一个标签集,其中 3 个字母的 ISO 国家代码作为 Limesurvey 答案代码,国家名称作为标签:

带有国家 ISO 代码的标签集

将我的 Limesurvey 数据导出到 R 时,代码和标签都保存到 R 语法文件中。代码保存为因子的“级别”,标签当然用作标签(为清楚起见而缩写):

data[, 7] <- as.character(data[, 7])
attributes(data)$variable.labels[7] <- "Which country are you from?"
data[, 7] <- factor(data[, 7], levels=c("AFG","ALA","ALB", ..., "ZMB","ZWE"),labels=c("Afghanistan","Åland Islands","Albania", ..., "Zambia","Zimbabwe"))
names(data)[7] <- "Q3_Nationality"

但是,我无法弄清楚如何在 R 中访问这个 3 个字母的 ISO 代码?获得 ISO 代码会很棒,因此我可以将其输入 rworldmapjoinCountryData2Map()函数并在地图上绘制数据。(我知道我也可以将国家名称传递给该函数,但这更容易出错。)

如果我检查变量,我会得到:

> data$Q3_Nationality
  [1] Guyana
  249 Levels: Afghanistan Åland Islands Albania Algeria ... Zimbabwe

同样,levels()只是给我:

levels(data$Q3_Nationality)
  [1] "Afghanistan"                                 
  [2] "Åland Islands"                               
  [3] "Albania"                                     
  [4] "Algeria"                                     
  [5] "American Samoa" 

没有“AFG”、“ALA”、“ALB”ISO 答案代码的迹象。

尝试将其转换为字符,再次给我完整的标签:

as.character(levels(data$Q3_Nationality))
  [1] "Afghanistan"                                 
  [2] "Åland Islands"                               
  [3] "Albania"                                     
  [4] "Algeria"                                     
  [5] "American Samoa" 

如果有人能告诉我如何访问这些,那就太好了!

4

1 回答 1

0

我会以这种方式提出一个肮脏的解决方案,您只需编辑您的 R 语法文件并将级别也设置为标签。但是,如果您以后要使用国家/地区的全名进行打印或绘图,则必须对其进行转换。你可以在你的代码中使用代码语法文件,也许在一个副本上用于打印。

于 2015-08-26T18:08:23.787 回答