2016-08-13 5 views
8
veraltet

I in R. Selbst leichte Probleme mit meiner Radarkarte habe, obwohl die Handlung in Ordnung ist, ich die folgende Warnung bin immer:Warnung, wenn Faktor definieren: duplizierten Ebene Faktoren

> 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 

Ich habe die gleichen Fehler in anderen Beiträgen gesehen, aber ich nicht wirklich verstehen, wie die Antworten auf meine Daten-Set ...

das ist mein Dataset

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 

Und das ist der Code für die korresp anzuwenden nden Radarkarte (wahrscheinlich nur den ersten Teil, wo ich definiere mein Dataset relevant ist, aber ja ... das ist, wo ich bin verloren):

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() 

Antwort

15

Ja, fast alles ist irrelevant für Ihr Problem.

Sie versuchen, einen Faktor mit den folgenden Ebenen zu schaffen: rev(dataset$variable). Das ergibt:

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

Sehen Sie, wie Sie Ebenen repliziert haben? Du wirst jedes Level nur einmal in der von dir gewünschten Reihenfolge haben wollen. Der Standardwert ist sort(unique(dataset$variable)), die C1 C2 C3 gibt, oder man könnte rev(unique(dataset$variable)C3 C2 C1 geben verwenden.

Das forcats Paket verfügt über mehrere Komfortfunktionen auf einfache Weise Faktoren und die Reihenfolge ihrer Ebenen machen oder zu ändern.

+0

Großartig, vielen Dank für Ihre Antwort! Die Zeile 'dataset $ variable <- factor (Datensatz $ variable, levels = rev (unique (Datensatz $ variable)), ordered = TRUE)' tut es – Jonas

Verwandte Themen