r - 将数字变量转换为有序因子的最佳方法

标签 r

我有一个看起来像这样的数据框:

df1 <- data.frame(V1=rnorm(n = 100, mean=0, sd=1),
                  Edu=sample(x = c(-999,12,13,14,16,1), size = 100, 
                             replace = T, prob = c(0.05,0.2,.2,0.2,0.2,0.15)))

我想转换变量 Edu到有序因子变量。我可以使用以下代码将其转换为字符变量:
lutedu <- c('-999' = NA, '12' = "High School", '13' = "Associate's", 
         '14' = "Associate's", '16' = "Bachelor's", 
         '18' = "Master's, Graduate/professional", '21' = "PhD")

df1$Edu <- lutedu[as.character(df1$Edu)]

从那里我可以使用 ordered() 将字符变量转换为有序因子:
df1$Edu <-
  ordered(
    x = df1$Edu, levels = c(
      "High School", "Associate's", "Bachelor's",
      "Master's, Graduate/professional", "PhD"
    )
  )

有没有更好的方法来做到这一点?

最佳答案

而不是使用命名向量重新编码然后调用 ordered ,您可以调用 ordered 为自己省一步并同时使用 levelslabels论据:

ordered(edu, levels=c(-999, 12, 13, 14, 16, 1),
        labels=c("NA", "High School", "Associate's", "Bachelor's",
                 "Master's/Graduate", "PhD"))
#   [1] High School       Master's/Graduate Master's/Graduate Bachelor's        Associate's      
#   [6] Master's/Graduate High School       Master's/Graduate High School       PhD              
# ...

数据 :
set.seed(144)
edu <- sample(x = c(-999,12,13,14,16,1), size = 100, 
              replace = T, prob = c(0.05,0.2,.2,0.2,0.2,0.15))

关于r - 将数字变量转换为有序因子的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183314/

相关文章:

python - docopt - 每个参数需要特定的数据类型

python - 如何自动下载卫星图像?

r - 如何从数据帧列表中添加单个数据帧

r - 将科学计数法 +e 转换为 geom_text 中带上标的 10^(y)

r - 如何制作多种格式的 R 包插图?

python - 在另一个 csv 文件中查找一个 csv 文件的值,使用第三个 csv 文件作为映射

r - 变量作为 rmarkdown 中的标题

r - 让 R 打印文本具有颜色,尤其是。在 R markdown 针织品中?

如果一行满足条件,则删除具有共同值的行

r - dplyr 连接 A 列或 B 列