我在 R :
中有以下数据框'Drugs abuse'
想要在这样的表中得到它:
origin destination amount
1 1 2 50
2 1 2 100
3 1 2 20
4 1 3 100
5 2 3 30
6 2 3 50
7 2 1 20
8 3 2 10
9 3 2 40
10 3 1 50
我认为它应该是 1 2 3
1 0 170 100
2 20 0 80
3 50 50 0
函数,但这只能得到以下结果:
table
我无法弄清楚如何将 1 2 3
1 0 3 1
2 1 0 2
3 1 2 0
列的计数作为连续性表中的值。有小费吗?
答案 0 :(得分:2)
您可以尝试xtabs
xtabs(amount~origin+destination, df1)
# destination
#origin 1 2 3
# 1 0 170 100
# 2 20 0 80
# 3 50 50 0
或者使用tapply
amd将NA
替换为0
with(df1, tapply(amount, list(origin, destination), FUN=sum))
正如@David Arenburg所提到的,这也可以通过reshape2
,tidyr
library(reshape2)
acast(df1, origin~destination, value.var='amount', sum)