我想规范化两个数据集,以便它们在特定的基准日期都具有公共值。这样我就可以避免绘制双轴图。
以下是一些示例数据:
x=c(2,5,8,7,9)
y=c(45,56,76,45,89)
w=strptime(20120101:20120105,'%Y%m%d')
z=data.frame(w,x,y)
返回此内容:
w x y
1 2012-01-01 2 45
2 2012-01-02 5 56
3 2012-01-03 8 76
4 2012-01-04 7 45
5 2012-01-05 9 89
我想在特定日期标准化x和y,让我们在上面的示例中说2012-01-03,以便在那个日期x和y都等于100.这是我的担忧:
对于问题2,我有类似z[-1,'x.Index']=(z[-1,'x']/z[-nrow(z),'x'])*100
的内容但返回前一记录的百分比变化,而不是基本记录。
答案 0 :(得分:1)
这是一个版本:
> x=c(2,5,8,7,9)
> y=c(45,56,76,45,89)
> w=strptime(20120101:20120105,'%Y%m%d')
> z=data.frame(w,x,y)
> z
w x y
1 2012-01-01 2 45
2 2012-01-02 5 56
3 2012-01-03 8 76
4 2012-01-04 7 45
5 2012-01-05 9 89
> baseRow <- subset(z, z$w == as.POSIXct("2012-01-03"))
>
> x.Pct <- (z$x / baseRow$x) - 1
> y.Pct <- (z$y / baseRow$y) - 1
>
> newDf <- data.frame(w , x = x.Pct, y = y.Pct)
> newDf
w x y
1 2012-01-01 -0.750 -0.4078947
2 2012-01-02 -0.375 -0.2631579
3 2012-01-03 0.000 0.0000000
4 2012-01-04 -0.125 -0.4078947
5 2012-01-05 0.125 0.1710526