2016-05-29 2 views
0

вопросы упираются дублированных уровней в факторах, в результате чего:R: правильно переупорядочить уровни факторов - избежать дублирования уровней факторов? {Ggplot2}

Warning message: 
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, : 
    duplicated levels in factors are deprecated 

были рассмотрены несколько раз. Тем не менее, я все еще не могу понять, как правильно преобразовать свои данные, чтобы избежать ввода дублированных уровней в мои данные?

У меня есть кадр данных, вы хотите сделать сюжет и изменить порядок уровней в моем сюжете. То, что мои дублированные уровни созданы, и я не могу переписать мой order, чтобы не вводить их. Пожалуйста, Как правильно правильно настроить уровни факторов?

df1<-data.frame(year = rep(2002:2005, 5), 
        rate = sample(30,20), 
        gridcode = rep(1:2, each = 10), 
        distance = rep(c(100,200), 10)) 

# change order - !!! how to write this correctly? 
df1$gridcode <- factor(df1$gridcode, 
         levels=df1$gridcode[ 
         order(df1$gridcode, decreasing = TRUE)])    


# plot values     
ggplot(df1,aes(x = distance, 
           y= rate, 
           fill = as.factor(gridcode))) +  
    geom_bar(position = "stack", stat = "identity") + 
    facet_grid(. ~ year) 
+2

Вам нужно обернуть ' уникальный 'вокруг вашей спецификации уровней, иначе вы назначаете уровни кучи раз -' unique (df1 $ gridcode) [порядок (уникальный (df1 $ gridcode), убывающий = ИСТИНА)] 'например. – thelatemail

+0

спасибо @thelatemail, кажется, работает! можете ли вы отправить его в качестве ответа, чтобы я мог принять его? – maycca

ответ

1

Вам нужно обернуть unique вокруг levels= спецификации, в противном случае вы назначаете уровни куч раз:

unique(df1$gridcode)[order(unique(df1$gridcode), decreasing = TRUE)] 
#[1] 2 1 

против

df1$gridcode[order(df1$gridcode, decreasing = TRUE)] 
#[1] 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 
Смежные вопросы