繁体   English   中英

如何从数字转换为R中的因子

[英]How to convert from numeric to factors in R

我有以下数据框:

df_raw <- cbind( P1=c(1,1,2,2,3), P2=c(2,3,4,4,4) )

如何将这些数字转换为具有不同水平的因子,以便获得类似的结果:

head(df_factor)
    P1  P2
1   "alpha" "beta"
2   "alpha" "gamma"
3   "beta"  "delta"

也就是说,其中1转换为“ alpha”,2转换为“ beta”,3转换为“ gamma”,依此类推。 我知道我可以使用ifelse语句,但是比起仅转换因子水平的某种方式,这将更加乏味。

如果我尝试例如:

df$P1 <- factor(df$P1, levels=c("alpha","beta","gamma" ))

我得到NAs的价值。

首先,使用cbind提供matrix ,而不是data.frame尝试:

df <- data.frame( P1=c(1,1,2,2,3), P2=c(2,3,4,4,4) )

然后使用labels为标签,而不是levels ,并设置levels ,以1:4 ,以覆盖所有可能的选择df$P1df$P2

df$P1 <- factor(df$P1, levels=1:4, labels=c("alpha","beta","gamma","delta"))
df

#     P1 P2
#1 alpha  2
#2 alpha  3
#3  beta  4
#4  beta  4
#5 gamma  4

df$P1
#[1] alpha alpha beta  beta  gamma
#Levels: alpha beta gamma delta

您可以使用lapply解决所有变量:

df <- data.frame( P1=c(1,1,2,2,3), P2=c(2,3,4,4,4) )
data.frame(lapply(df,factor,levels=1:4,labels=c("alpha","beta","gamma","delta")))

#     P1    P2
#1 alpha  beta
#2 alpha gamma
#3  beta delta
#4  beta delta
#5 gamma delta

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM