2016-08-13 16 views
8

Mam mały problem z moim wykresie radarowym w R. Choć fabuła jest dobrze Dostaję następujące ostrzeżenie:Ostrzeżenie przy określaniu czynników: poziomu czynników powielane są przestarzałe

> source('~/.active-rstudio-document') 
Warning message: 
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, : 
    duplicated levels in factors are deprecated 
> radar 
Warning messages: 
1: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, : 
    duplicated levels in factors are deprecated 
2: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, : 
    duplicated levels in factors are deprecated 

mam widziałem ten sam błąd w innych postach, ale ja naprawdę nie rozumiem, w jaki sposób stosować odpowiedzi do mojego zestawu danych ...

to mój zestaw danych

MSF,C1,2 
OCA,C1,6 
SIOA,C1,4 
CCFF,C1,4 
MSF,C2,4 
OCA,C2,2 
SIOA,C2,6 
CCFF,C2,2 
MSF,C3,6 
OCA,C3,6 
SIOA,C3,6 
CCFF,C3,6 

I to jest kod na correspo nding wykres radarowy (chyba tylko pierwszą część, gdzie mogę zdefiniować mój zestaw danych jest istotne, ale tak ... to gdzie jestem zagubiony):

colnames(dataset) = c("type", "variable", "value") 
dataset$value = as.numeric(dataset$value) 

dataset$variable <- factor(dataset$variable, levels = rev(dataset$variable), ordered=TRUE) 

# Radar function ------------------------------------------------------------ 
coord_radar <- function (theta = "x", start = 0, direction = 1) { 
    theta <- match.arg(theta, c("x", "y")) 
    r <- if (theta == "x") 
    "y" 
    else "x" 
    ggproto("CordRadar", CoordPolar, theta = theta, r = r, start = start, 
      direction = sign(direction), 
      is_linear = function(coord) TRUE) 
} 


# Radar plot ------------------------------------------------------------ 
radar <- ggplot(dataset, aes(x = variable, y = value, group=type)) + 
    geom_polygon(aes(group = type, color=type,fill=type), size = 1, alpha=0.1) + 
    scale_fill_manual(values=cbPalette) + 
    geom_line(aes(group = type, color=type)) + 
    scale_colour_manual(values = cbPalette) + 
    coord_radar() 

Odpowiedz

15

Tak, prawie wszystko to nie ma znaczenia dla problemu.

Próbujesz utworzyć współczynnik z następującymi poziomami: rev(dataset$variable). Wydajność:

[1] C3 C3 C3 C3 C2 C2 C2 C2 C1 C1 C1 

Zobacz, jak zreplikowałeś poziomy? Będziesz chciał mieć każdy poziom tylko raz, w wybranej kolejności. Wartość domyślna to, co daje C1 C2 C3, lub możesz użyć rev(unique(dataset$variable), aby nadać C3 C2 C1.

Pakiet forcats ma kilka funkcji ułatwiających wprowadzanie lub zmianę czynników oraz kolejność ich poziomów.

+0

Świetnie, dziękuję bardzo za odpowiedź! Wiersz 'dataset $ zmienna <- czynnik (zbiór danych $ zmienna, poziomy = rev (unikalny (zbiór danych $ zmienna)), uporządkowany = TRUE)' robi to – Jonas

Powiązane problemy