全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4037 6
2012-07-03

两列数据,左边权数,右边数值,怎样用R求加权和??

例如:
      权数        数值
1    10              1
2     20             1
3     15             1
4      5              2
5      10            2
6      15            2
7       50           3
8       30           3

我想得到的结果是:数值为1的有10+20+15=45个,数值为2的有5+10+15=20个,数值为3的有50+30=80个

本人为R菜鸟,求高人指点,能写出程序或者指点我去看哪些manal材料等等,多谢了!

补充:实际数据量比较多,有两列,741173行,第二列数值很多,从0.1到5600,不能一一列出,而第一列的权数很大,一般是几十万。
实际数据



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-3 15:27:53
我也是菜鸟,看不明白,还是支持你一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-3 15:34:37
paullover 发表于 2012-7-3 15:27
我也是菜鸟,看不明白,还是支持你一下
谢谢支持,共同进步
我的意思其实挺简单的:把第二列相同数值的权数相加,比如把在第二列同是1的权数为10,20,15,相加得45
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-3 15:51:35
是的,试了一下,没有弄出来
在stata里面很简单
bys y: egen var3=sum(x)
期待解答

或许可以用aggregate实现。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-3 16:40:45
简单的可以这样实现

- data.frame(Category=c(1,1,2,2,3,4,4),Frequency=c(10,15,5,2,14,20,3))
> x
  Category Frequency
1        1        10
2        1        15
3        2         5
4        2         2
5        3        14
6        4        20
7        4         3
> aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum)
  Category  x
1        1 25
2        2  7
3        3 14
4        4 23

或者tapply(x$Frequency, x$Category, FUN=sum)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-4 13:26:08
谢谢你热心的解答!希望以后大家多多交流!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群