2015-09-13 170 views
0

我想重新分类一个分类变量。我用的是cut功能如下:将分类变量重新分类为另一个分类变量?

g <- mun %>% mutate(., regiao=cut(ufn, 
    breaks=c(ufn %in% c("Acre", "Amapá", "Amazonas", "Pará", "Rondônia", "Roraima", "Tocantins"), 
     ufn %in% c("Alagoas", "Bahia", "Ceará"," Maranhão", "Paraíba", "Pernambuco", "Piauí", "Rio Grande do Norte", "Sergipe"), 
     ufn %in% c("Goiás", "Mato Grosso", "Mato Grosso do Sul", "Distrito Federal"), 
     ufn %in% c("Espírito Santo", "Minas Gerais", "Rio de Janeiro", "São Paulo"), 
     ufn %in% c("Paraná", "Santa Catarina", "Rio Grande do Sul")), labels=c("Norte","Nordeste","Centro- Oeste","Sudeste","Sul"))) 

但你必须知道,我需要声明一个数值来使用它,那么我不能继续进行下去。

我的意图是让这些州成为地区。你知道我该怎么做?

回答

0

好了,这里有一个方法:

cats <- setNames(list(c("Acre", "Amapá", "Amazonas", "Pará", "Rondônia", "Roraima", "Tocantins"), 
         c("Alagoas", "Bahia", "Ceará"," Maranhão", "Paraíba", "Pernambuco", "Piauí", "Rio Grande do Norte", "Sergipe"), 
         c("Goiás", "Mato Grosso", "Mato Grosso do Sul", "Distrito Federal"), 
         c("Espírito Santo", "Minas Gerais", "Rio de Janeiro", "São Paulo"), 
         c("Paraná", "Santa Catarina", "Rio Grande do Sul")), 
       c("Norte","Nordeste","Centro- Oeste","Sudeste","Sul")) 
# example data 
var <- c("Acre","Mato Grosso","Rio de Janeiro","Ceará","Espírito Santo") 
df <- data.frame(x=1:5, var) 

f <- function(x) names(cats)[sapply(cats, function(y) x %in% y)] 
df$region <- as.factor(sapply(df$var,f)) 
df 
# x   var  region 
# 1 1   Acre   Norte 
# 2 2 Mato Grosso Centro- Oeste 
# 3 3 Rio de Janeiro  Sudeste 
# 4 4   Ceará  Nordeste 
# 5 5 Espírito Santo  Sudeste