Tôi muốn đếm số lần xuất hiện của một yếu tố trong một khung dữ liệu. Ví dụ, để đếm số lượng các sự kiện của một loại nhất định trong các mã dưới đây:Đếm số lần xuất hiện của hệ số trong R, với tổng số không được báo cáo
library(plyr)
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
ddply(events, .(type), summarise, quantity = sum(quantity))
Kết quả như sau:
type quantity
1 A 3
2 B 1
Tuy nhiên, những gì nếu tôi biết rằng có ba loại sự kiện A
, B
và C
và tôi cũng muốn xem số lượng cho C
là 0
? Nói cách khác, tôi muốn đầu ra là:
type quantity
1 A 3
2 B 1
3 C 0
Làm cách nào để thực hiện việc này? Nó cảm thấy như có nên có một chức năng được định nghĩa để làm điều này ở đâu đó.
Sau đây là hai ý tưởng không tốt của tôi về cách thực hiện việc này.
Idea # 1: Tôi biết tôi có thể làm điều này bằng cách sử dụng một vòng lặp for
, nhưng tôi biết rằng nó được nói rộng rãi rằng nếu bạn đang sử dụng một vòng lặp for
trong R
, sau đó bạn đang làm điều gì sai, có phải là một cách tốt hơn để làm điều đó.
Ý tưởng # 2: Thêm mục nhập giả vào khung dữ liệu gốc. Giải pháp này hoạt động nhưng nó cảm thấy như cần có một giải pháp thanh lịch hơn.
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
events <- rbind(events, data.frame(type = 'C', quantity = 0))
ddply(events, .(type), summarise, quantity = sum(quantity))
'e <- sapply (sự kiện, FUN = as.factor); bảng (e) ' – isomorphismes