web-dev-qa-db-ja.com

ファクターを定義する際の警告:ファクターの重複したレベルは非推奨です

Rのレーダーチャートに少し問題があります。プロットは良好ですが、次の警告が表示されます。

> 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

私は他の投稿でも同じエラーを見ましたが、回答をデータセットに適用する方法を本当に理解していませんでした...

これは私のデータセットです

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

そして、これは対応するレーダーチャートのコードです(おそらく、データセットを定義する最初の部分のみが関連しますが、ええと...そこが失われています)。

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

はい、ほとんどすべてはあなたの問題とは無関係です。

次のレベルのファクターを作成しようとしています:rev(dataset$variable)。その結果:

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

レベルをどのように複製したかをご覧ください。各レベルは、必要な順序で1回だけにする必要があります。デフォルトはsort(unique(dataset$variable))で、_C1 C2 C3_を返します。または、rev(unique(dataset$variable)を使用して_C3 C2 C1_を指定できます。

forcatsパッケージには、因子とそのレベルの順序を簡単に作成または変更するための便利な関数がいくつかあります。

26
Axeman