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

从R中的大数据框创建股票指数等,r,dataframe,plyr,stock,R,Dataframe,Plyr,Stock,我有一个数据框namnedstockdata,其中包括几年内几只股票的收盘价。数据框的样式如下所示: 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.

我有一个数据框namned
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
因此,我想:

  • 添加一列名称为“百分比”,该列应包含基于每只股票首次上市日期的股票表现百分比

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

  • 哪种方法最容易实现这些功能?有没有办法不必遍历所有数据?

    数据

    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)
    

    谢谢你,托尼!关于问题2,我想我只需要股票新列“百分比”的平均值,而你仍然希望<代码>百分比列的平均值按股票代码分组,对吗?我编辑了代码以反映这一点。我已经在@tonybot测试了代码,并且百分比运行良好。然而,如果我要绘制数据(当股票数据实际上波动很大时),平均值只会创建一条直线水平线。我想我需要为平均值创建一个新的向量,并确保每个日期只有一个可用值。有什么简单的方法可以做到这一点吗?我通过创建一个新的tibble并使用summary函数解决了@tonybot的平均问题。谢谢你的帮助!:)
    library(tidyverse)
    
    df %>%
      group_by(ticker) %>%
      mutate(
        percentage = close / close[date == min(date)],
        average = mean(percentage))