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

时间:2015-08-19 16:04:27

标签: r r-factor limesurvey

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

Labelset with ISO codes for countries

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

$query = "SELECT count(*) AS total FROM table_name"; 
mysql_select_db('database_name');
$result = mysql_query($query); 
$values = mysql_fetch_assoc($result); 
$num_rows = $values['total']; 
echo $num_rows;

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

如果我检查变量,我得到这个:

joinCountryData2Map()

同样,> data$Q3_Nationality [1] Guyana 249 Levels: Afghanistan Åland Islands Albania Algeria ... Zimbabwe 只是给了我:

levels()

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

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

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

如果有人能告诉我如何访问它们会很棒!

1 个答案:

答案 0 :(得分:0)

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