【问题标题】:Computing a Lag on a Table in R在 R 中计算表上的滞后
【发布时间】:2020-12-07 19:55:02
【问题描述】:

我有一个数据表 my_data,其中包含 3 个变量、符号、日期、股票价格和 141851 个观察值。 这个想法是计算股票价格的 1 天滞后,注意首先按符号分组,否则我将使用数据框中前一只股票的值计算滞后。

这是表格中的一些行。

Symbol date stock price
MSFT 2019-02-12 106.8100
MSFT 2019-02-13 106.9000
MSFT 2019-02-14 108.2200
APPL 2018-01-02 168.9873
APPL 2018-01-03 168.9579
APPL 2018-01-04 169.7427

我需要计算整个表格的比率{price(i)-price(i-1)} / price(i-1)。 但我不能移动它。

我今天开始使用 R,所以我很挣扎。

【问题讨论】:

    标签: r


    【解决方案1】:

    这是一个使用内置数据集的示例。我推荐dplyr 进行这些计算。请参阅cheatsheet

    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    
    df <- data(ChickWeight)
    
    df <- as_tibble(ChickWeight)
    
    df <- df %>% 
      group_by(Chick) %>% 
      mutate(change = (weight-first(weight))/first(weight)*100) %>% 
      mutate(change = round(change,2))
    

    reprex package (v0.3.0) 于 2020 年 12 月 7 日创建

    【讨论】:

      【解决方案2】:

      我们也可以使用data.table

      library(data.table)
      setDT(df1)[, change := round(weight - first(weight))/first(weight) * 100, 2), Chick] 
      

      数据

      data(ChickWeight)
      df1 <- ChickWeight
      

      【讨论】:

        猜你喜欢
        • 2019-03-31
        • 2019-09-05
        • 1970-01-01
        • 2016-01-15
        • 2017-08-21
        • 2022-06-15
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多