R/SQL—投资组合性能
假设我有一个表:3个投资组合账户、日期和百分比变化,即5实际上代表5%R/SQL—投资组合性能,sql,sql-server,r,excel,tableau-api,Sql,Sql Server,R,Excel,Tableau Api,假设我有一个表:3个投资组合账户、日期和百分比变化,即5实际上代表5% Date Account %Change 8/1/2015 A 5 8/1/2015 B 1 8/1/2015 C 2 8/2/2015 A -2 8/2/2015 B 6 8/2/2015 C 1 8/3/2015 A 3 8/3/2015
Date Account %Change
8/1/2015 A 5
8/1/2015 B 1
8/1/2015 C 2
8/2/2015 A -2
8/2/2015 B 6
8/2/2015 C 1
8/3/2015 A 3
8/3/2015 B -4.5
8/3/2015 C -3
现在我想添加一个新的列“Score”,并自动计算基于
就百分比变化而言,假设2015年8月1日是最早的数据,那么8月1日账户A的得分将为100*(1+5%)=105,8月2日将为
105*(1-2%)=102.9,基本上就像今天的分数=昨天的分数*(1+%变化)。让100作为最早日期之前的基准分数
Date Account %Change Score
8/1/2015 A 5 105
8/1/2015 B 1 101
8/1/2015 C 2 102
8/2/2015 A -2 102.9
8/2/2015 B 6 107.06
8/2/2015 C 1 103.02
8/3/2015 A 3 105.99
8/3/2015 B -4.5 102.24
8/3/2015 C -3 99.93
我这里有两个问题:
Date Account %Change Score
8/1/2015 A 5 105
8/2/2015 A -2 102.9
8/3/2015 A 3 105.99
8/1/2015 B 1 101
8/2/2015 B 6 107.06
8/3/2015 B -4.5 102.24
8/1/2015 C 2 102
8/2/2015 C 1 103.02
8/3/2015 C -3 99.93
原始数据源位于SQLServer中。这是数据预处理,在我得到预期的数据格式之后,我将使用Tableau进行数据处理。基本上,整个目的是可视化数据,但原始数据没有“分数”,只有%的变化。Tableau似乎不适合这种数据操作,所以我想知道我是否可以在SQLServer中进行操作,或者使用R进行计算
如果您有任何想法或建议,请发布,谢谢 要将C列中的值转换为百分比,只需除以100即可。你可以这样做
- 在某个空白单元格中输入
100
- 编辑/复制
- 选择C2:Cn
- 编辑/粘贴特殊/分割
- ESC以删除选择
- 您可能希望使用1位小数设置百分比格式,正如我在下面的屏幕截图中所做的那样
A
实例的108.15是一个错误,并且您的表以A1开头,第1行有列标题,那么将给出您显示的结果的公式(无论数据是否排序,都是:
D2: =IF(COUNTIF($B$2:B2,B2)=1,100*(1+C2),LOOKUP(2,1/($B$1:B1=B2),$D$1:D1)*(1+C2))
公式说明
第三个实例
A
如何得到108.15?我觉得102.9*(1+3%)应该是105.987谢谢你的回复,这是一个错误,应该是105.99,正如你所说。似乎将数据输出到excel是解决我问题的最简单方法,在SQLServer中实现相同的目标会非常复杂吗?@JerryLi我无法回答。也许有SQL经验的人会插话。