Tôi có dữ liệu trong các hình thức sau đây:Làm thế nào để ghép hàng với cùng một giá trị trong một cột của một dataframe trong R
set.seed(1234)
data <- data.frame(cbind(runif(40,0,10), rep(seq(1,20,1), each = 2)))
data <- data[sample(nrow(data)),]
colnames(data) <- c("obs","subject")
head(data)
obs subject
1.5904600 12
8.1059855 13
5.4497484 6
0.3999592 12
2.5880982 19
2.6682078 9
... ...
Hãy nói rằng tôi chỉ có hai quan sát (cột "obs") theo chủ đề (cột "chủ đề", trong đó đối tượng được đánh số từ 1 đến 20).
Tôi muốn "nhóm" hàng theo giá trị của cột "chủ đề". Chính xác hơn, tôi muốn "sắp xếp" dữ liệu theo chủ đề, nhưng bảo tồn thứ tự được hiển thị ở trên. Do đó, dữ liệu cuối cùng sẽ như sau:
obs subject
1.5904600 12
0.3999592 12
8.1059855 13
2.3656473 13
5.4497484 6
7.2934746 6
Bất kỳ ý tưởng nào? Tôi nghĩ có lẽ xác định mỗi hàng tương ứng với một chủ đề với which
:
which(data$subject==x)
sau đó rbind
các hàng trong một vòng lặp nhưng tôi chắc chắn có một cách đơn giản hơn và nhanh hơn để làm điều này, phải không?
Dữ liệu mẫu của bạn là ma trận, nó có phải là data.frame không? – zx8754
hãy thử một cái gì đó như thế này: 'dữ liệu [thứ tự (dữ liệu $ chủ đề),] ' – Bulat
@Bulat chúng tôi sẽ mất thứ tự ban đầu. – zx8754