Với dữ liệu giả sau đây:Làm thế nào tôi có thể thả các mức không sử dụng từ một khung dữ liệu?
set.seed(123)
x <- data.frame(let = sample(letters[1:5], 100, replace = T),
num = sample(1:10, 100, replace = T))
y <- subset(x, let != 'a')
Tạo một bảng y$let
mang
a b c d e
0 20 21 22 18
Nhưng tôi không muốn a
để hiển thị nữa. Nếu tôi cố gắng để làm điều này:
levels(y$let) <- factor(y$let)
tôi mớ hỗn độn các tần số, kể từ bây giờ table(y$let)
mang lại cho tôi
b d c e
0 20 21 40
Tôi biết tôi có thể làm xtabs(~ y$let, drop.unused.levels = T)
và làm việc xung quanh vấn đề này, nhưng nó không thiết lập lại các mức biến ở lõi của nó (điều quan trọng đối với tôi, vì đây là một thay đổi ban đầu mà tôi đang thực hiện cho tập dữ liệu sẽ thực hiện trong toàn bộ phân tích). Hơn nữa, xtabs
là một lớp học khác nhau từ table
, điều này sẽ khiến tôi đau đầu sau này trong dự án.
Câu hỏi đặt ra là: làm cách nào tôi có thể tự động thay đổi levels(y$let)
để nó không hiển thị các cấp đã bị xóa khi tôi tạo tập hợp con? Trong trường hợp này, làm thế nào tôi có thể làm cho nó hiển thị [1] "b" "c" "d" "e"
?
Câu trả lời giành được trong câu hỏi trùng lặp của anh ấy không tốt bằng câu trả lời ở đây. Các khác nên được đánh dấu là một bản sao của điều này vì đây là một câu trả lời tốt hơn MUCH – TheSteve0