说我有以下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)
但它也没有用。感谢。
答案 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']))