全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1806 8
2015-03-02
假如原始表有:区域、数量、分数三个字段;
通过R计算出数量占比,然后拿数量占比乘以分数加权求和,从而计算出每个区域维度的最终得分。

区域  数量   数量占比      分数    最终得分
A         1         0.33             100         93
A         2         0.67             90

B         3         0.43             100         89
B         4         0.57              80

二维码

扫码加我 拉你入群

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

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

全部回复
2015-3-2 22:00:12
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

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

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

2015-3-2 22:11:00
应该自己先编个函数,整个步骤如下:
qy<-c('A','A','B','B') ##区域
sl<-c(1,2,3,4) ##数量
fs<-c(100,90,100,80)##分数
dat<-data.frame(qy,sl,fs)##创建数据框
fun<-function(x){ sum(x[,1]*x[,2]/sum(x[,1]))}##编写计算函数
by(cbind(dat$sl,dat$fs),dat$qy,fun)##调用by函数
二维码

扫码加我 拉你入群

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

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

2015-3-2 22:11:47
hanson.don 发表于 2015-3-2 22:11
应该自己先编个函数,整个步骤如下:
qy
INDICES: A
[1] 93.33333
-------------------------------------------------------
INDICES: B
[1] 88.57143
刚才忘记运行了,这是运行结果
二维码

扫码加我 拉你入群

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

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

2015-3-2 22:33:10
hanson.don 发表于 2015-3-2 22:11
INDICES: A
[1] 93.33333
-------------------------------------------------------
非常感谢!专家哈

能否将输出结果放在原始表格后面那列呢?按照上面的列表展示那样;
或者将输出结果以列表形式单独输出sheet2表到excel(假定原表是excel的sheet1表),谢谢!
二维码

扫码加我 拉你入群

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

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

2015-3-4 11:02:20
wuchm 发表于 2015-3-2 22:33
非常感谢!专家哈

能否将输出结果放在原始表格后面那列呢?按照上面的列表展示那样;
代码如下:#输入数据
dat<-NULL
dat$区域<-c("A","A","B","B")
dat$数量<-c(1,2,3,4)
dat$分数<-c(100,90,100,80)
dat<-data.frame(dat)
#分析
library(dplyr)
dat<-group_by(dat,区域)
dat<-mutate(dat,数量占比=数量/sum(数量))
dat<-mutate(dat,最终得分=sum(数量占比*分数))


输出结果如下:
  区域 数量 分数  数量占比 最终得分
1    A    1  100 0.3333333 93.33333
2    A    2   90 0.6666667 93.33333
3    B    3  100 0.4285714 88.57143
4    B    4   80 0.5714286 88.57143



二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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