【问题标题】:How can I convert dummy variables to factors in R?如何将虚拟变量转换为 R 中的因子?
【发布时间】:2013-08-26 13:58:46
【问题描述】:

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

    answer
      1
      2
      1
      2

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

     answer
       NO
       YES
       NO
       YES

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

其实我想做的就是用lattice把数据可视化

   barchart(as.factor(with(survey, survey$answer)))

上述命令确实生成了条形图,但我需要将标签更改为“是”和“否”而不是“2”和“1”。这就是我需要转换虚拟变量的原因。

【问题讨论】:

  • 鉴于您的编辑,您可能应该更改您的问题标题...
  • 如果您已经在说with(survey,...),则无需说survey$answer。这是多余的。
  • @Thomas,实际上我想知道这两个答案。我的意思是“如何将虚拟变量更改为因子”和“如何编辑条形图标签”。前一个问题是我的主要兴趣。编辑的部分也是一个问题,但这是一个小问题。

标签: r


【解决方案1】:

使用factor函数如:

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

【讨论】:

  • 谢谢你的回答!
【解决方案2】:

Metrics 的答案会给你一个字符变量。对于一个因素:

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

【讨论】:

  • 我觉得@Jilber 的做法比较常见。
【解决方案3】:

为了好玩,这里有另一种选择。它不需要转换为因子,但这对于您的条形图也不是必需的:

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])

【讨论】:

    【解决方案4】:
       answer<-ifelse(answer==1,"NO","YES")
    > answer
    [1] "NO"  "YES" "NO"  "YES"
    
    > as.factor(answer)
    [1] No  YES No  YES
    Levels: No YES
    

    或者,使用汽车包中的recode

    answer<-recode(answer,"1='No';else='YES'")
    > answer
    [1] "No"  "YES" "No"  "YES"
    
    
      > as.factor(answer)
    [1] No  YES No  YES
    Levels: No YES
    

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多