我有一个数据表my_data,包含3个变量,符号、日期、股价和141851个观测值。这个想法是计算股票价格的滞后1天,注意首先按符号分组,否则我将使用数据帧中前一只股票的值计算滞后。
这是表中的一些行。
符号 | 日期 | 股价 | |
---|---|---|---|
MSFT | 2019-02-12 | 106.8100 | |
MSFT | 2019-02-13 | 106.9000 | |
MSFT | 2019-02-14 | 108.2200 | |
APPL | 2018-01-02 | 168.9873[/tr>||
APPL | 2018-01-03 | 168.9579||
APPL | 2018年01月04日 | 169.7427
下面是一个使用内置数据集的示例。我建议使用dplyr
进行这些计算。请参阅备忘单。
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df <- data(ChickWeight)
df <- as_tibble(ChickWeight)
df <- df %>%
group_by(Chick) %>%
mutate(change = (weight-first(weight))/first(weight)*100) %>%
mutate(change = round(change,2))
由reprex包(v0.3.0(创建于2020-12-07
我们也可以使用data.table
library(data.table)
setDT(df1)[, change := round(weight - first(weight))/first(weight) * 100, 2), Chick]
数据
data(ChickWeight)
df1 <- ChickWeight