始めに - 私の質問を閲覧/回答するために時間を割いていただきありがとうございます。この質問を説明するために最善を尽くします (あまり難しくないことを願っています。私は決して R の専門家ではありません)。
以下のデータがあるとします (最初の列は日付、2 番目の列は「レベル」、レベルは毎日 2:8 から繰り返されるシーケンスです。Var 3 は単なる統計です..)
Date level var3
1 2/10/2017 2 0.2340
2 2/10/2017 3 0.1240
3 2/10/2017 4 0.5120
4 2/10/2017 5 0.4440
5 2/10/2017 6 0.1200
6 2/10/2017 7 0.5213
7 2/10/2017 8 0.1200
8 2/11/2017 2 0.4100
9 2/11/2017 3 0.6500
10 2/11/2017 4 0.2400
11 2/11/2017 5 0.5500
13 2/11/2017 6 0.3100
14 2/11/2017 7 0.1500
15 2/11/2017 8 0.2300
16 2/12/2017 2 0.1500
17 2/12/2017 3 0.5800
18 2/12/2017 4 0.3300
19 2/12/2017 5 0.2100
20 2/12/2017 6 0.9800
21 2/12/2017 7 0.3200
22 2/12/2017 8 0.1800
私の目標は、次のことを行ってデータを標準化することです。
- Create a new column called 'Change'
- For each unique date, Change is (log(var3) - log(var3[level == 5])
基本的に、一意の日付ごとに、Var3 データを行ごとに取得し、そのログを var3 FOR THAT DAY* のレベル 5 の値で減算します [たとえば、change[1] = log(.2340) - log(.4440) .. change[2] = log(.1240) - log(.444)... ですが、change[10] の場合は log(.2400) - log(.5500).. となります。すぐ..
私はRでこれをコード化するのに問題があります.以下は私が思いついたコードです(しかし、結果は21行x 24変数のようです... 「CHANGE」...そして、私はそれを理解できません:/ )
log_mean <- function(data_set) {
for (i in unique(data_set$Date) {
midpoint <- data_set$var3[data_set$level == 5]
c <- (log(data_set$var3) - log(midpoint))
change <- rbind(change,c)}}
y <- cbind(x, change)
できれば助けてください。直感的にはとても簡単に思えます。Rでこれを行う方法がわかりません[そして、私は比較的新しいです] ..
どうもありがとう!