次のようなデータフレームがあります。
message.id sender recipient
1 1 A B
2 1 A C
3 2 A B
4 3 B C
5 3 B D
6 3 B Q
これを取得するために、送信者と受信者の列の値の数で要約したいと思います。
address messages.sent messages.received
1 A 3 0
2 B 3 2
3 C 0 2
4 D 0 1
5 Q 0 1
magrittr
私は動作するコードを持っていますが、それは面倒です。以下にあるものではなく、これをすべて1つのチェーンで行う方法があることを願っています:
df <- data.frame(message.id = c(1,1,2,3,3,3),
sender = c("A","A","A","B","B","B"),
recipient = c("B","C","B","C","D","Q"))
sent <- df %>%
group_by(sender) %>%
summarise(messages.sent = n()) %>%
mutate(address = sender) %>%
select(address, messages.sent)
received <- df %>%
group_by(recipient) %>%
summarise(messages.received = n()) %>%
mutate(address = recipient) %>%
select(address, messages.received)
df_summary <- merge(sent, received, all = TRUE) %>%
replace(is.na(.), 0)