を含むデータ フレームがありますfactor
。 または別のインデックス関数を使用してこのデータ フレームのサブセットを作成するとsubset
、新しいデータ フレームが作成されます。ただし、factor
新しいデータ フレームに存在しない場合でも、変数は元のレベルをすべて保持します。
これにより、ファセット プロットを実行したり、因子レベルに依存する関数を使用したりするときに問題が発生します。
新しいデータフレームの要素からレベルを削除する最も簡潔な方法は何ですか?
次に例を示します。
df <- data.frame(letters=letters[1:5],
numbers=seq(1:5))
levels(df$letters)
## [1] "a" "b" "c" "d" "e"
subdf <- subset(df, numbers <= 3)
## letters numbers
## 1 a 1
## 2 b 2
## 3 c 3
# all levels are still there!
levels(subdf$letters)
## [1] "a" "b" "c" "d" "e"
ベストアンサー1
R バージョン 2.12 以降ではdroplevels()
関数があります。
levels(droplevels(subdf$letters))