1

始めに - 私の質問を閲覧/回答するために時間を割いていただきありがとうございます。この質問を説明するために最善を尽くします (あまり難しくないことを願っています。私は決して 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でこれを行う方法がわかりません[そして、私は比較的新しいです] ..

どうもありがとう!

4

1 に答える 1