使用 Dplyr - 股票数据计算组间百分比变化

Calculating percent change between groups using Dplyr - Stock Data

只是尝试计算每只股票在给定时间段内的百分比变化。我目前使用dplyr的代码如下:

stocks_df %>%
filter(Date > now() - days(2)) %>%
group_by(Stock) %>%
mutate(period_return = (Close - first(Close))/ first(Close) * 100) %>%
do(tail(., n=1))


Date       Stock   Close 
2020-02-05 AAPL   308.86 
2020-02-04 AAPL   318.85 
2020-02-03 AAPL   321.45 
2020-02-05 BA     329.55 
2020-02-04 BA     317.94 
2020-02-03 BA     316 
2020-02-05 MSFT   179.9 
2020-02-04 MSFT   180.12 
2020-02-03 MSFT   174.38 

期望的输出是:

AAPL -3.92%
BA   4.29%
MSFT 3.17%

我猜你要找的是:

library(dplyr)
df %>%
  group_by(Stock) %>%
  summarise(period_return = -(last(Close) - first(Close))/ last(Close) * 100)

# Stock period_return
#  <fct>         <dbl>
#1 AAPL          -3.92
#2 BA             4.29
#3 MSFT           3.17

可以使用 aggregate

在 base R 中完成
aggregate(Close~Stock, df, function(x) -(x[length(x)] - x[1])/x[length(x)] * 100)