如何在R中的一个分类变量中组合两个级别

Yan*_*yan 4 r

我现在正在学习R,我遇到了查找命令的问题.

我有分类数据

levels(job)
[1] "admin."        "blue-collar"   "entrepreneur"  "housemaid"    
[5] "management"    "retired"       "self-employed" "services"     
[9] "student"       "technician"    "unemployed"    "unknown"
Run Code Online (Sandbox Code Playgroud)

现在我想简化这些级别,例如

levels(job) 
[1] "class1"  "class2" "class3" "unknown"
Run Code Online (Sandbox Code Playgroud)

其中type1包括"admin.","entrepreneur",和"self-employed"; type2包括"blue-collar","management",和"technician"; type3包括"housemaid","student","retired",和"services"; unknown包括"unknown""unemployed".

为此,我可以使用哪个命令?谢谢!严

Fra*_*ank 10

您可以分配到levels:

levels(z)[levels(z)%in%c("unemployed","unknown","self-employed")] <- "unknown"
Run Code Online (Sandbox Code Playgroud)

这包含在帮助文件中 - 类型?levels.


从@ akrun的答案中窃取,您可以使用哈希/列表最干净地执行此操作:

ha <- list(
  unknown = c("unemployed","unknown","self-employed"),
  class1  = c("admin.","management")
)

for (i in 1:length(ha)) levels(z)[levels(z)%in%ha[[i]]] <- names(ha)[i]
Run Code Online (Sandbox Code Playgroud)