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

时间:2014-01-21 23:49:23

标签: r dataframe levels

我有以下数据框:

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

1 个答案:

答案 0 :(得分:3)

首先,使用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$P1和{{1}中的所有可能选项}}

df$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