【问题标题】:Calculating stocks' returns in R在 R 中计算股票的回报
【发布时间】:2021-11-30 10:01:29
【问题描述】:

我有一个数据框,其中包含多天的多只股票价格:

   Date Stock_Name Price
1 10-01          A   100
2 10-01          B     5
3 10-01          C     2
4 10-02          A   110
5 10-02          B    10
6 10-02          C     3
7 10-03          A   121
8 10-03          B    20
9 10-03          C     6

现在,我想根据每只股票的名称对它们进行分组,并计算它们从 10-01 到 10-03 的每日回报,理想情况下:

   Date Stock_Name Price Return
1 10-01          A   100     NA
2 10-01          B     5     NA 
3 10-01          C     2     NA
4 10-02          A   110    0.1
5 10-02          B    10      1
6 10-02          C     3    0.5
7 10-03          A   121    0.1
8 10-03          B    20      1
9 10-03          C     6      1

我该怎么做?

【问题讨论】:

  • 如果您以可重现的格式发布数据,您将更快获得答案!
  • df %>% group_by(Stock_Name) %>% mutate(daily_return = round(Price/lag(Price) - 1,digits = 1))df 您的数据。另外,不要调用你的新变量 Return:它是一个函数名,大写 R 关闭。
  • @MonJeanJean 等人,也不要叫你的data.framedfdf也是base R中的一个函数,即F分布的密度函数。 :-)
  • @phiver Ho,不知道,谢谢!
  • 在 SO 上调用数据框 df 是一种常见的做法,并且通常的做法是在答案中而不是在 cmets 中发布完整的解决方案!

标签: r dataframe


【解决方案1】:

您可以使用data.table 来执行此操作:

library(data.table)
setDT(dat)
dat[, return := (Price / shift(Price) ) -1 , by=Stock_Name]
dat

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多