【问题标题】:How to convert integer to factor? [duplicate]如何将整数转换为因子? [复制]
【发布时间】:2015-09-18 19:53:04
【问题描述】:

假设我有以下 df

x<-c(1,3,2,4,1,3,2,4,1,3,2,4)
y<-c(rnorm(12))
df<-data.frame(x,y)

x 是整数,我尝试使用 R 食谱中的建议将其转换为因子:

df[,'x']<-factor(df[,'x'])

但它仍然是一个整数。我已经尝试了在论坛上找到的解决方案

df[,'x']<-lapply(df[,'x'], factor)

但它也没有工作。谢谢。

【问题讨论】:

  • lapply 方法在我尝试时会出错,第二种方法会给出所需的输出...
  • @TanDollars 你是对的

标签: r


【解决方案1】:

您的原始解决方案似乎有效。检查typeof() 以及class()

x<-c(1,3,2,4,1,3,2,4,1,3,2,4)
y<-c(rnorm(12))
df<-data.frame(x,y)
typeof(df$x)
#"double"    
class(df$x)
#"numeric"
df[,'x']<-factor(df[,'x'])
typeof(df$x)
 #"integer"
class(df$x)
#"factor"

【讨论】:

  • 谢谢,erasmortg。当我检查班级时,它显示“因素”。我希望这确实是一个因素。不明白为什么 typeof 显示整数。我也刚试过 str(df) ,它表明 x 是一个因素。
【解决方案2】:

可以试试

df$x=as.factor(df$x)

【讨论】:

  • 试过没用。还是一个整数
  • 这更经常返回 NA。
  • @M-- df 在没有 NAs 的例子中工作,你能提供 NAs 的例子吗?
  • 对,这就是我经常说的原因(用其他类型的数据框/列谈论解决方案)
  • @M-- 你能举个例子吗?
【解决方案3】:

试试这个。

df[,'x'] <- as.factor(as.character(df[,'x']))

【讨论】:

    【解决方案4】:

    代码

    df[,'x']<-factor(df[,'x'])
    

    实际上确实可以正常工作。但使用您选择的 x 值 1、2、3、4,它并不那么明显。试试这个:

    x<-c(10,23,23, 12, 12, 12, 10, 10, 34, 45, 10, 23)
    y<-c(rnorm(12))
    df<-data.frame(x,y)
    df[,'x']<-factor(df[,'x'])
    str(df)
    

    现在很容易看出 x 列的因子 w/ 5 个级别 "10","12","23" ...

    【讨论】:

      【解决方案5】:

      这将起作用:

      df[,'x'] <- as.factor(df[,'x'])
      

      【讨论】:

      • 也许我做错了什么。这就是我所做的,也是我得到的
      • df[,'x'] typeof(df$x) [1] "integer"
      • 使用类(df$x) [1] "因子"
      猜你喜欢
      • 2019-12-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2012-11-16
      • 2013-07-23
      • 2019-03-15
      • 1970-01-01
      相关资源
      最近更新 更多