如何用频率分布计算相同的数字

时间:2016-03-10 19:26:20

标签: r

这是我的数据框:

x <- data.frame(ID = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), 
                B = c(60,50,60,40,50,20,20,30,20,60,60,30,20,30,40,20,30,20,30,60))

我想计算B中相似值的总和,然后将它们乘以它们的频率分布(例如,20次观察6次。所以20 * 6 = 120)。所以我会有这些价值观:

120,150,80,100,300。

然后我想将这些值相加,然后除以样本(120 + 150 + 80 + 100 + 300)/ 20。所以我会得到这个数字37.5。有R代码吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

使用表格功能可能有更优雅的解决方案总线,您可以这样做:

sum(as.numeric(names(table(x$B))) * table(x$B)) / nrow(x)

答案 1 :(得分:0)

library(dplyr)
tbl_df(x) %>% 
  group_by(B) %>% 
  summarise(count=n()) %>% 
  mutate(c=B*count)%>%
  summarise(result=sum(c)/sum(count))

输出

Source: local data frame [1 x 1]

  result
   (dbl)
1   37.5