Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将虚拟变量转换为R中的因子?_R - Fatal编程技术网

如何将虚拟变量转换为R中的因子?

如何将虚拟变量转换为R中的因子?,r,R,在我的数据框架(称为调查)中,有一个变量称为“答案” 我想把这些虚拟变量转换成 answer NO YES NO YES 我应该对调查$answer数据应用什么命令 实际上我想做的是用lattice可视化数据 barchart(as.factor(with(survey, survey$answer))) 上面的命令确实生成了条形图,但我需要将标签更改为“是”和“否”,而不是“2”和“1”。这就是为什么我需要转换虚拟变量

在我的数据框架(称为调查)中,有一个变量称为“答案”

我想把这些虚拟变量转换成

     answer
       NO
       YES
       NO
       YES
我应该对调查$answer数据应用什么命令

实际上我想做的是用lattice可视化数据

   barchart(as.factor(with(survey, survey$answer)))
上面的命令确实生成了条形图,但我需要将标签更改为“是”和“否”,而不是“2”和“1”。这就是为什么我需要转换虚拟变量

   answer<-ifelse(answer==1,"NO","YES")
> answer
[1] "NO"  "YES" "NO"  "YES"

> as.factor(answer)
[1] No  YES No  YES
Levels: No YES

使用
因子
函数,如下所示:

> answer <- c(1,2,1,2)
> answer <- factor(answer, labels=c("NO", "YES"))
[1] NO  YES NO  YES
Levels: NO YES

>answer-answerMetrics的答案将为您提供一个字符变量。作为一个因素:

answer <- rep(1:2,2)
answer <- as.factor(answer)
levels(answer) <- c("NO","YES")

答案为了好玩,这里有另一个选择。转换为因子并不麻烦,但这对于条形图来说也是不必要的:

set.seed(1)
x <- sample(2, 50, replace = TRUE)
x
#  [1] 1 1 2 2 1 2 2 2 2 1 1 1 2 1 2 1 2 2 1 2 2 1 2 1 1 1 1 1 2 1 1 2
# [33] 1 1 2 2 2 1 2 1 2 2 2 2 2 2 1 1 2 2
c("NO", "YES")[x]
#  [1] "NO"  "NO"  "YES" "YES" "NO"  "YES" "YES" "YES" "YES" "NO" 
# [11] "NO"  "NO"  "YES" "NO"  "YES" "NO"  "YES" "YES" "NO"  "YES"
# [21] "YES" "NO"  "YES" "NO"  "NO"  "NO"  "NO"  "NO"  "YES" "NO" 
# [31] "NO"  "YES" "NO"  "NO"  "YES" "YES" "YES" "NO"  "YES" "NO" 
# [41] "YES" "YES" "YES" "YES" "YES" "YES" "NO"  "NO"  "YES" "YES"
library(lattice)
barchart(c("NO", "YES")[x])

考虑到您的编辑,您可能应该更改您的问题标题……如果您已经在(调查…)中说了
,则无需说
调查$answer
。“那是多余的!”托马斯,实际上我想知道这两个答案。我的意思是“如何将虚拟变量更改为因子”和“如何编辑条形图标签”。前一个问题是我最感兴趣的。编辑的部分也是一个问题,但这是一个小问题。我认为@Jilber的方法更常见。谢谢,我遵循了你的答案!谢谢你的回答。
set.seed(1)
x <- sample(2, 50, replace = TRUE)
x
#  [1] 1 1 2 2 1 2 2 2 2 1 1 1 2 1 2 1 2 2 1 2 2 1 2 1 1 1 1 1 2 1 1 2
# [33] 1 1 2 2 2 1 2 1 2 2 2 2 2 2 1 1 2 2
c("NO", "YES")[x]
#  [1] "NO"  "NO"  "YES" "YES" "NO"  "YES" "YES" "YES" "YES" "NO" 
# [11] "NO"  "NO"  "YES" "NO"  "YES" "NO"  "YES" "YES" "NO"  "YES"
# [21] "YES" "NO"  "YES" "NO"  "NO"  "NO"  "NO"  "NO"  "YES" "NO" 
# [31] "NO"  "YES" "NO"  "NO"  "YES" "YES" "YES" "NO"  "YES" "NO" 
# [41] "YES" "YES" "YES" "YES" "YES" "YES" "NO"  "NO"  "YES" "YES"
library(lattice)
barchart(c("NO", "YES")[x])