我正在分析R的一份Limesurvey调查问卷中的一些数据,其中一个调查问题是询问人们的原籍国,并使用带有国家列表的下拉列表。我已经为此创建了一个标签集,将3个字母的ISO国家代码作为Limesurvey答案代码,并将国家名称作为标签:
将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代码,那就太好了,这样我就可以将其输入到rworldmap joinCountryData2Map()
函数中,并在地图上绘制数据。(我知道我也可以将国家名称传递给该函数,但这更容易出错。)
如果我检查这个变量,我会得到如下结果:
> 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"
如果有人能告诉我如何访问这些,那就太好了!
发布于 2015-08-26 18:08:24
我会以这种方式提出一个糟糕的解决方案,您只需编辑R-Syntax-file并将级别设置为标签即可。但是,如果您想在以后打印或绘图时使用国家/地区的全名,则必须对其进行转换。您可以在代码中使用代码语法文件,也可以在副本中进行打印。
https://stackoverflow.com/questions/32100558
复制相似问题