Tôi có một khung dữ liệu chứa a factor
. Khi tôi tạo một tập hợp con của subset
khung dữ liệu này bằng cách sử dụng hoặc một chức năng lập chỉ mục khác, một khung dữ liệu mới được tạo. Tuy nhiên, factor
biến vẫn giữ tất cả các mức ban đầu của nó, ngay cả khi / nếu chúng không tồn tại trong khung dữ liệu mới.
Điều này gây ra vấn đề khi thực hiện âm mưu khía cạnh hoặc sử dụng các chức năng dựa trên mức độ yếu tố.
Cách ngắn gọn nhất để loại bỏ các cấp độ từ một yếu tố trong khung dữ liệu mới là gì?
Đây là một ví dụ:
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"