索引数据以避免双y轴

时间:2012-03-19 04:00:47

标签: r

我想规范化两个数据集,以便它们在特定的基准日期都具有公共值。这样我就可以避免绘制双轴图。

以下是一些示例数据:

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.这是我的担忧:

  1. 我如何挑出记录3来获得x.Index = 100和y.Index = 100?
  2. 如何从记录3的x和y分别创建x.Index和y.Index的所有其他记录的百分比差异?
  3. 对于问题2,我有类似z[-1,'x.Index']=(z[-1,'x']/z[-nrow(z),'x'])*100的内容但返回前一记录的百分比变化,而不是基本记录。

1 个答案:

答案 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