私は数百もの列を持つ大規模な財務データを持っています。私は日付に基づいてデータを整理し、ソートしました。ここでは簡単な例です:多数の列に異なる値を割り当てる
df1 <- data.frame(matrix(vector(),ncol=5, nrow = 4))
colnames(df1) <- c("Date","0.4","0.3","0.2","0.1")
df1[1,] <- c("2000-01-31","0","0","0.05","0.07")
df1[2,] <- c("2000-02-29","0","0.13","0.17","0.09")
df1[3,] <- c("2000-03-31","0.03","0.09","0.21","0.01")
df1[4,] <- c("2004-04-30","0.05","0.03","0.19","0.03")
df1
Date 0.4 0.3 0.2 0.1
1 2000-01-31 0 0 0.05 0.07
2 2000-02-29 0 0.13 0.17 0.09
3 2000-03-31 0.03 0.09 0.21 0.01
4 2000-04-30 0.05 0.03 0.19 0.03
私は会社名を気にしないと、私は結果を計算するための重みを必要とするので、私は、列ヘッダとして(生データから市場価値に基づいて)個々の重みを割り当て。
私の究極の目標は、以下を得ることです。1.加重収益の合計。 2.リターンがゼロでない場合のウェイトの合計。例えば
Date SWeightedR SWeights
1 2000-01-31 0.017 0.3
2 2000-02-29 0.082 0.6
3 2000-03-31 0.082 1
4 2000-04-30 0.07 1
を、2000年1月31日= 0.4x0 + 0.3x0 + + 0.1x0.07 0.2x0.05ためSWeightedR、と:それは言われていると、以下の私が取得したい結果がありますSWeights = 0.2 + 0.1。
最初の考えでは、WCol2 <- 0.4
のように各列に重みを割り当ててから、cbind
を使用して新しい列を作成し、合計を得るにはc(as.matrix() %*%)
を使用しました。私はすぐに、何百もの列があるのでこれは不可能であることを認識しています。どんなアドバイスや提案も感謝しています!
例のように、非日付の列の数値は数値( '0.4')か文字(' '0.4" ')ですか? –
tidyrパッケージhttps://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.htmlを使用して、幅広い 'form'から' long'フォームに変換する価値があります。 – momeara