如何使用R生成股票退货数据集



我有一个数据集如下:

stockCode   date    Closeprice
A   2022-01-24  100
A   2022-01-25  101
A   2022-01-26  103
A   2022-01-27  104
A   2022-01-28  103
B   2022-01-24  200
B   2022-01-25  180
B   2022-01-26  177
B   2022-01-27  192
B   2022-01-28  202
C   2022-01-24  304
C   2022-01-25  333
C   2022-01-26  324
C   2022-01-27  360
C   2022-01-28  335

然后,我想添加一些返回列如下:

在此处输入图像描述

我试着制作一个新的专栏,并计算回报,但总是显示错误。

> data$newclose <- data$Closeprice[2:length(data$Closeprice)-2]
Error in `$<-.data.frame`(`*tmp*`, newclose, value = c(8900, 9090, 9200,  : 
replacement has 126626 rows, data has 126628

lhs和rhs上的赋值长度应该相同。也许我们需要得到lead

library(dplyr)
data1 <- data %>%
mutate(newcolose = lead(Closeprice, n = 1))

我首先使用lead创建值为1到4天的新列。然后,我计算每组每天的百分比变化。

library(tidyverse)
df %>% 
group_by(stockCode) %>% 
mutate(day1 = lead(Closeprice, n = 1),
day2 = lead(Closeprice, n = 2),
day3 = lead(Closeprice, n = 3),
day4 = lead(Closeprice, n = 4)) %>% 
mutate(across(starts_with("day"), ~((. - Closeprice)/Closeprice)*100))

输出

# A tibble: 15 × 5
# Groups:   stockCode [3]
stockCode    day1   day2   day3  day4
<chr>       <dbl>  <dbl>  <dbl> <dbl>
1 A           1       3     4       3  
2 A           1.98    2.97  1.98   NA  
3 A           0.971   0    NA      NA  
4 A          -0.962  NA    NA      NA  
5 A          NA      NA    NA      NA  
6 B         -10     -11.5  -4       1  
7 B          -1.67    6.67 12.2    NA  
8 B           8.47   14.1  NA      NA  
9 B           5.21   NA    NA      NA  
10 B          NA      NA    NA      NA  
11 C           9.54    6.58 18.4    10.2
12 C          -2.70    8.11  0.601  NA  
13 C          11.1     3.40 NA      NA  
14 C          -6.94   NA    NA      NA  
15 C          NA      NA    NA      NA 

最新更新