我有以下数据帧:
> 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