2015-09-13 125 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