1. ホーム
  2. r

[解決済み] 値の順序を変えずに要因のレベルを並べ替える

2022-05-16 02:47:47

質問

いくつかの数値変数といくつかのカテゴリ変数を持つデータフレームがあります。 factor 変数があります。これらの要素のレベルの順序は、私がそれらを望む方法ではないです。

numbers <- 1:4
letters <- factor(c("a", "b", "c", "d"))
df <- data.frame(numbers, letters)
df
#   numbers letters
# 1       1       a
# 2       2       b
# 3       3       c
# 4       4       d

レベルの順番を変えると、文字が対応する数字と一緒にならなくなります(私のデータはこの時点から全くナンセンスです)。

levels(df$letters) <- c("d", "c", "b", "a")
df
#   numbers letters
# 1       1       d
# 2       2       c
# 3       3       b
# 4       4       a

を変更したいだけです。 レベル の順序を変更したいだけです。プロットするとき、棒グラフは希望する順序で表示されます - デフォルトのアルファベット順とは異なるかもしれません。

どのように解決するのですか?

を使用します。 levels の引数に factor :

df <- data.frame(f = 1:4, g = letters[1:4])
df
#   f g
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d

levels(df$g)
# [1] "a" "b" "c" "d"

df$g <- factor(df$g, levels = letters[4:1])
# levels(df$g)
# [1] "d" "c" "b" "a"

df
#   f g
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d