Tôi muốn tổng hợp các hàng của ma trận bằng cách thêm các giá trị vào các hàng có cùng tên. Cách tiếp cận hiện tại của tôi là như sau:Các hàng tổng hợp trong một ma trận lớn bằng cách gọi lại
> M
a b c d
1 1 1 2 0
1 2 3 4 2
2 3 0 1 2
3 4 2 5 2
> index <- as.numeric(rownames(M))
> M <- cbind(M,index)
> Dfmat <- data.frame(M)
> Dfmat <- aggregate(. ~ index, data = Dfmat, sum)
> M <- as.matrix(Dfmat)
> rownames(M) <- M[,"index"]
> M <- subset(M, select= -index)
> M
a b c d
1 3 4 6 2
2 3 0 1 2
3 4 2 5 2
Vấn đề appraoch này là tôi cần phải áp dụng nó cho một số ma trận rất lớn (lên đến 1.000 hàng và 30.000 cột). Trong những trường hợp này, thời gian tính toán rất cao (cùng một vấn đề khi sử dụng ddply). Có một eficcient hơn để đến với các giải pháp? Nó có giúp các ma trận đầu vào ban đầu là DocumentTermMatrix từ gói tm không? Theo như tôi biết chúng được lưu trữ trong một định dạng ma trận thưa thớt.
Không hoàn toàn rõ ràng những gì bạn cần làm, nhưng tôi muốn chơi xung quanh với gói 'reshape' (melt() và cast()) một chút. Nhưng quan trọng hơn: làm cách nào bạn cho phép tên hàng trùng lặp ở địa điểm đầu tiên? đó thường là một ý tưởng tồi. –
Trong dữ liệu của tôi, tên gọi là ngày tháng. Chúng trùng lặp bất cứ khi nào tôi có nhiều quan sát trong cùng một ngày. – Christian
@Christian Đó là tốt. Tôi nghĩ Carl đang nghĩ đến các khung dữ liệu, nơi mà các bản sao hoàn toàn không được phép. –