如何将整数转换为R中的因子?

时间:2015-07-01 15:02:48

标签: r

说我有以下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 cookbook中的建议将其转换为因子:

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

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

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

但它也没有用。感谢。

5 个答案:

答案 0 :(得分:6)

您的原始解决方案似乎有效。查看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"

答案 1 :(得分:3)

可能会尝试

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

答案 2 :(得分:1)

代码

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

确实可以正常工作。但是使用你选择的1,2,3,4的x值并不是那么明显。试试吧:

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”......

答案 3 :(得分:0)

这将有效:

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

答案 4 :(得分:0)

试试这个。

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