从 R 中的大型数据框创建股票指数等
Creating a stock index etc. from a large data frame in 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
由此我想:
添加一个名为 percentage
的列,其中应包含基于每只股票首次上市日期的股票表现百分比。
根据数据框中所有股票的收盘价创建股票指数。由于股票数量随时间变化(不同引入日期、退市等),因此在计算新股票指数的百分比和价格时需要考虑这一点。
执行这些操作最简单的方法是什么?有什么办法不用遍历所有数据吗?
数据
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))
我有一个名为 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
由此我想:
添加一个名为
percentage
的列,其中应包含基于每只股票首次上市日期的股票表现百分比。根据数据框中所有股票的收盘价创建股票指数。由于股票数量随时间变化(不同引入日期、退市等),因此在计算新股票指数的百分比和价格时需要考虑这一点。
执行这些操作最简单的方法是什么?有什么办法不用遍历所有数据吗?
数据
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))