从Limesurvey导出中访问R中的级别值(答案代码)

问题描述:

我正在分析R中Limesurvey问卷的一些数据。其中一项调查问题要求人们提供其原籍国,并在国家/地区列表中使用下拉菜单。我创建了一个labelset这与3个字母的ISO国家代码为Limesurvey答案代码和国家名称作为标签:从Limesurvey导出中访问R中的级别值(答案代码)

Labelset with ISO codes for countries

当导出我的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" 

不过,我不知道如何访问此3个字母的ISO代码在R?获得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" 

这将是巨大的,如果有人能告诉我如何访问这些!

+0

查看可能的重复:http://stackoverflow.com/questions/5869539/confusion-between-factor-levels-and-factor-labels – BumbleBee

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