2016-06-16 6 views
1

私のデータフレームは、多くの公開企業の時系列の財務データで構成されています。データを整理している間に、企業の重みを列ヘッダーとして意図的に設定し、次のステップで重み付けされたリターンを計算するために、それぞれのログリターンを計算しました。列ヘッダーを新しい列に変換する

ここは例です。 A、B、C、Dの4社があり、それぞれのポートフォリオに対応するウェイトは0.4,0.3,0.2,0.1である。だから、現在のデータセットは、次のようになります。

df1 <- data.frame(matrix(vector(),ncol=9, nrow = 4)) 
colnames(df1) <- c("Date","0.4","0.4.Log","0.3","0.3.Log","0.2","0.2.Log","0.1","0.1.Log") 
df1[1,] <- c("2004-10-29","103.238","0","131.149","0","99.913","0","104.254","0") 
df1[2,] <- c("2004-11-30","104.821","0.015","138.989","0.058","99.872","0.000","103.997","-0.002") 
df1[3,] <- c("2004-12-31","105.141","0.003","137.266","-0.012","99.993","0.001","104.025","0.000") 
df1[4,] <- c("2005-01-31","107.682","0.024","137.08","-0.001","99.782","-0.002","105.287","0.012") 
df1 
     Date  0.4 0.4.Log  0.3 0.3.Log 0.2 0.2.Log  0.1 0.1.Log 
1 2004-10-29 103.238  0 131.149  0 99.913  0 104.254  0 
2 2004-11-30 104.821 0.015 138.989 0.058 99.872 0.000 103.997 -0.002 
3 2004-12-31 105.141 0.003 137.266 -0.012 99.993 0.001 104.025 0.000 
4 2005-01-31 107.682 0.024 137.08 -0.001 99.782 -0.002 105.287 0.012 

私は私が私の次のステップに加重リターンを計算できるように、会社の重みが含まれている新しい列を作成したい:

 Date  0.4 0.4.W 0.4.Log  0.3 0.3.W 0.3.Log 0.2 0.2.W 0.2.Log  0.1 0.1.W 0.1.Log 
1 2004-10-29 103.238 0.400 0.000 131.149 0.300 0.000 99.913 0.200 0.000 104.254 0.100 0.000 
2 2004-11-30 104.821 0.400 0.015 138.989 0.300 0.058 99.872 0.200 0.000 103.997 0.100 -0.002 
3 2004-12-31 105.141 0.400 0.003 137.266 0.300 -0.012 99.993 0.200 0.001 104.025 0.100 0.000 
4 2005-01-31 107.682 0.400 0.024 137.080 0.300 -0.001 99.782 0.200 -0.002 105.287 0.100 0.012 
+1

名前から始まるものは数字で始まりますが、あなたの人生は悲惨なバックテックの混乱につながります。 – alistaire

+0

広いデータフォーマットで作業するのも悲惨な混乱です。これは、あなたのデータがDateのカラムが1つ、Weightのカラムが1つ、Returnのカラムが1つ、 '0.4'、' 0.3'、...カラムの値が何であれ、きれいな名前のカラムあなたの結果にあります。 – Gregor

+0

[今日の私の答えを見る](http://stackoverflow.com/q/37865643/903061)long型の素晴らしい変換のために、列名の中に誤って配置された変数を分離する。 – Gregor

答えて

1

我々は

を試すことができます
v1 <- grep("^[0-9.]+$", names(df1), value = TRUE) 
df1[paste0(v1, ".w")] <- as.list(as.numeric(v1)) 
関連する問題