首先,感谢您抽出宝贵时间查看/回答我的问题。我会尽力解释这个问题(希望不会太难,我绝不是 R 专家)
假设我有以下数据(第一列是日期,第二列是“级别”,级别是每天 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 变量......但我真的只想要 21 行和 4 列,第 4 列是“改变”......我就是无法理解:/)
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 中做到这一点 [是的,我是相对较新的]..
非常感谢!