Tôi đang cố sử dụng lệnh by
của R để lấy cột có nghĩa là cho các tập hợp con của một khung dữ liệu. Ví dụ, hãy xem xét khung dữ liệu này:chuyển đổi đầu ra của lệnh "by" của R thành khung dữ liệu
> z = data.frame(labels=c("a","a","b","c","c"),data=matrix(1:20,nrow=5))
> z
labels data.1 data.2 data.3 data.4
1 a 1 6 11 16
2 a 2 7 12 17
3 b 3 8 13 18
4 c 4 9 14 19
5 c 5 10 15 20
tôi có thể sử dụng lệnh R của by
để có được những cột có nghĩa là theo các nhãn cột:
> by(z[,2:5],z$labels,colMeans)
z[, 1]: a
data.1 data.2 data.3 data.4
1.5 6.5 11.5 16.5
------------------------------------------------------------
z[, 1]: b
data.1 data.2 data.3 data.4
3 8 13 18
------------------------------------------------------------
z[, 1]: c
data.1 data.2 data.3 data.4
4.5 9.5 14.5 19.5
Nhưng làm thế nào để ép buộc đầu ra trở lại một dữ liệu khung? as.data.frame
không hoạt động ...
> as.data.frame(by(z[,2:5],z$labels,colMeans))
Error in as.data.frame.default(by(z[, 2:5], z$labels, colMeans)) :
cannot coerce class '"by"' into a data.frame
Tuyệt vời! Tất cả làm những gì tôi đang tìm kiếm, mặc dù 'aggregate' có vẻ đơn giản nhất (và đơn giản nhất cho tôi để tìm ra một lần nữa trong tương lai). Cảm ơn! – Andrew