从R中的大数据帧创建股票指数等



我有一个名为stockdata的数据框架,其中包括几年来几只股票的收盘价。数据帧的样式如下所示:

date close  ticker  stock.name
2001-09-06  3.06  LAGR   Lagercrantz
2001-09-07  2.89  LAGR   Lagercrantz
2001-09-09  2.67  LAGR   Lagercrantz
2001-09-10  2.67  LAGR   Lagercrantz
2001-09-11  2.56  LAGR   Lagercrantz
2001-09-12  2.24  LAGR   Lagercrantz
2001-09-13  2.44  LAGR   Lagercrantz
2001-09-06 20.70  MEAB   Malmbergs Elektriska
2001-09-07 20.60  MEAB   Malmbergs Elektriska
2001-09-09 20.40  MEAB   Malmbergs Elektriska
2001-09-10 20.50  MEAB   Malmbergs Elektriska
2001-09-11 20.50  MEAB   Malmbergs Elektriska
2001-09-12 20.70  MEAB   Malmbergs Elektriska
2001-09-13 20.60  MEAB   Malmbergs Elektriska
2011-07-06 1.8018 HTRO   Hexatronic
2011-07-07 1.8018 HTRO   Hexatronic
2011-07-08 1.8318 HTRO   Hexatronic
2011-07-11 1.8394 HTRO   Hexatronic
2011-07-12 1.8394 HTRO   Hexatronic
2011-07-13 1.8769 HTRO   Hexatronic

由此我想:

  1. 添加一个名为percentage的列,该列应包含基于每只股票首次上市日期的股票表现百分比。

  2. 根据数据框中所有股票的收盘价创建股票指数。由于股票数量因时间而异(不同的推出日期、退市等(,在计算新股指的百分比和价格时需要考虑这一点。

执行这些操作最简单的方法是什么?有没有办法不必遍历所有数据?

数据

df <- read.table(text = "
date close  ticker  stock.name
2001-09-06  3.06  LAGR   Lagercrantz
2001-09-07  2.89  LAGR   Lagercrantz
2001-09-09  2.67  LAGR   Lagercrantz
2001-09-10  2.67  LAGR   Lagercrantz
2001-09-11  2.56  LAGR   Lagercrantz
2001-09-12  2.24  LAGR   Lagercrantz
2001-09-13  2.44  LAGR   Lagercrantz
2001-09-06 20.70  MEAB   'Malmbergs Elektriska'
2001-09-07 20.60  MEAB   'Malmbergs Elektriska'
2001-09-09 20.40  MEAB   'Malmbergs Elektriska'
2001-09-10 20.50  MEAB   'Malmbergs Elektriska'
2001-09-11 20.50  MEAB   'Malmbergs Elektriska'
2001-09-12 20.70  MEAB   'Malmbergs Elektriska'
2001-09-13 20.60  MEAB   'Malmbergs Elektriska'
2011-07-06 1.8018 HTRO   Hexatronic
2011-07-07 1.8018 HTRO   Hexatronic
2011-07-08 1.8318 HTRO   Hexatronic
2011-07-11 1.8394 HTRO   Hexatronic
2011-07-12 1.8394 HTRO   Hexatronic
2011-07-13 1.8769 HTRO   Hexatronic
",
header = TRUE)

1.和2.

library(tidyverse)
df %>%
group_by(ticker) %>%
mutate(
percentage = close / close[date == min(date)],
average = mean(percentage))

最新更新