2013-11-14 1 views
0

У меня есть большая матрица df длиной более 3000 строк. Я программирую в R. Это выглядит так:R ряды строк в телекоммуникационной матрице

df: person1 person2 calls 
     1  3   5 
     1  4   7 
     2  11   6 
     3  1   5 
     3  2   1 
     3  4   13 

и так далее.

Что я хочу сделать, так это получить общее количество вызовов, которые каждый человек сделал и получил в двух матрицах. Это будет выглядеть так:

calls:  person madecalls    received: person receivedcalls 
       1   12        1   5 
       2   6        2   1 
       3   19        3   5 
                  4   20 
                  11   6 

Может ли кто-нибудь помочь мне с этой проблемой?

Спасибо!

ответ

0

Используйте aggregate функции:

made.calls <- aggregate(df$calls, by = list(person = df$person1), fun = sum) 
0

..... plyr способ:

library(plyr) 

ddply(df, .(person1), function(x) data.frame(madecalls = sum(x$calls))