R:面板数据连续 return

R: Continuous return for panel data

我有以下数据:

structure(list(`Product Name` = c("A", "A", "A", "B", "B", "B", 
"C", "C", "C"), Year = c(2018L, 2019L, 2020L, 2018L, 2019L, 2020L, 
2018L, 2019L, 2020L), Price = c(200L, 300L, 250L, 304L, 320L, 
103L, 203L, 203L, 402L)), class = "data.frame", row.names = c(NA, 
-9L))

现在我想根据以下公式计算年度连续 return:ln(Price_t /Price_(t-1)) 其中 t 代表年份。

我遇到了以下问题: 但是,我对 return.

有不同的公式

有人可以帮我写代码吗? 非常感谢。

您可以使用 dplyr 的滞后函数获取上一周期 returns 并按产品名称分组以执行计算。

library(dplyr)
df <- df %>% 
    group_by(`Product Name`) %>% 
    mutate(return = log(Price / dplyr::lag(Price)))
# A tibble: 9 x 4
# Groups:   Product Name [3]
# `Product Name`  Year Price  return
# <chr>          <int> <int>   <dbl>
#     1 A        2018   200 NA     
#       A        2019   300  0.405 
#       A        2020   250 -0.182 
#       B        2018   304 NA     
#       B        2019   320  0.0513
#       B        2020   103 -1.13  
#       C        2018   203 NA     
#       C        2019   203  0     
#       C        2020   402  0.683