2012-03-19 114 views
1

我想標準化兩個數據集,以便它們在特定的基準日期都具有相同的值。這將允許我避免繪製雙軸圖。索引數據以避免雙Y軸

下面是一些樣本數據:

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 = 1 00和y.Index = 100?
  2. 如何在記錄3的x和y中分別爲x.Index和y.Index的所有其他記錄創建百分比差異?

問題2我有這樣的事情z[-1,'x.Index']=(z[-1,'x']/z[-nrow(z),'x'])*100但返回從此前的紀錄的百分比變化,而不是從基地備案。

回答

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