如何将虚拟变量转换为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])