这是我的数据框:
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代码吗?谢谢你的帮助。
答案 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