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

标签 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

最佳答案

首先,使用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

关于r - R中如何将数字转换为因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271452/

相关文章:

r - 如何使用 R 中的子函数更改具有加号 (+) 的因子水平?

python - 计算深度或嵌套列表的最深级别

Rcpp 随机洗牌 : reproducing results across operating systems

r - Bslib 仅更改导航栏颜色

在R中的图例中删除符号中的线

python - 在循环中修改 pandas 数据帧的条目

c++ - 在 R 中调用 GPU 函数

python - Pandas ,将多列的多个功能应用于groupby对象

r - 如何在 R 中将数据帧转换为数组?

audio - 合并两个数字声音文件