r语言 - 每个因子水平组合的"Weighted"计数



我有以下数据帧:

> df=data.frame(from = c("x","y","x","z"), to=c("w","x","w","y"),weight=c(1,1,3,4))
> df
from to weight
1    x  w      1
2    y  x      1
3    x  w      3
4    z  y      4

如果我想计算列from的元素在数据帧中出现的次数,我需要使用:

> table(df$from)
x y z 
2 1 1 

这不是加权和。无论如何,我怎么能同时考虑列weight呢?例如,在我的例子中,正确的答案应该是:

x y z 
4 1 4 

您可以使用tapply并为from中的每个唯一值计算sum

tapply(df$weight, df$from, sum)
#x y z 
#4 1 4 

我们可以从dplyr使用count

library(dplyr)
df %>% 
count(from, wt = weight)
#  from n
#1    x 4
#2    y 1
#3    z 4

base R中,我们可以使用xtabs

xtabs(weight~ from, df)
#from
#x y z 
#4 1 4 

最新更新