2013-04-25 35 views
3

我有一个数据集(称为DATA)和一个变量COLOR。 COLOR的模式是数字,类是因子。首先,我对“数字”感到困惑 - 打印出来时,COLOR的数据不是数字 - 它们都是字符值,如白色或蓝色或黑色等。对此的任何澄清都是值得赞赏的。此外,我需要编写R代码以返回COLOR变量的级别,然后确定此变量的当前参考级别,最后将此变量的参考级别设置为White。我尝试了使用因子,但完全没有成功。在R中更改变量的参考级别

谢谢您花时间帮忙。

+0

没有代码将很难帮助你http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – dickoa 2013-04-25 15:48:21

+0

又见'统计::对比'。 – 2013-04-25 16:51:19

回答

5

mode(DATA$COLOR)"numeric"因为ř内部存储因素数字代码(以节省空间),再加上一个相关联的对应于码值标签的载体。当您打印该因子时,R会自动替换每个代码的相应标签。

f <- factor(c("orange","banana","apple")) 
## [1] orange banana apple 
## Levels: apple banana orange 
str(f) 
## Factor w/ 3 levels "apple","banana",..: 3 2 1 
c(f) ## strip attributes to get a numeric vector 
## [1] 3 2 1 
attributes(f) 
## $levels 
## [1] "apple" "banana" "orange" 
## $class 
## [1] "factor" 

...我需要写R代码返回可变色的水平...

levels(DATA$COLOR) 

...然后确定这个变量的当前基准水平,

levels(DATA$COLOR)[1] 

...最后将此变量的参考电平设置为白色。

DATA$COLOR <- relevel(DATA$COLOR,"White") 
+0

这似乎工作,非常感谢。还有一个要求:我如何检查以确认所做的更改?如果我再次使用关卡(DATA $ COLOR)[1],它只会打印出原件,而不是新重新对齐的参考,对吗? – 2013-04-25 16:00:42

+2

你确定吗? '水平(因数(字母),'z'))[1]'!='水平(因子(字母))[1]' – Rcoster 2013-04-25 16:44:48

+0

同意@Rcoster。也许你忘了把''''''''''''''''的结果赋给'DATA $ COLOR'变量......? – 2013-04-25 19:11:56

3

这是R stores factors的后果。您在控制台中看到的值看起来像字符,但在内部存储为数字(因为可能超出此范围的原因)。

如果要恢复关卡,可以输入levels(DATA$COLOR)。在控制台中查看?factor?levels以查看更多信息。如果你想重新水平一个因素,然后尝试并添加一个reproducible example,所以我可以遍历代码。

+0

啊,我明白你对内部存储器的意思了 - 谢谢澄清,这对于像我这样的R新手来说有点混乱。 – 2013-04-25 15:59:53