【问题标题】:How can I create an event window around a dummy variable?如何围绕虚拟变量创建事件窗口?
【发布时间】:2021-07-17 08:27:27
【问题描述】:

我的面板数据集看起来像这个没有变量“New”的表。现在我正在尝试创建变量“New”,如下所示:

Symbol  Date        Close       Event     Event1  Event1_date  New
AAPL    09/03/2020  66,542503   14/03/2020  NA    NA           NA
AAPL    10/03/2020  71,334999   14/03/2020  NA    NA           -4
AAPL    11/03/2020  68,857498   14/03/2020  NA    NA           -3
AAPL    12/03/2020  62,057499   14/03/2020  NA    NA           -2
AAPL    13/03/2020  69,4925     14/03/2020  NA    NA           -1
AAPL    16/03/2020  60,552502   14/03/2020  1     16/03/2020    0
AAPL    17/03/2020  63,215      14/03/2020  NA    NA            1
AAPL    18/03/2020  61,6675     14/03/2020  NA    NA            2
AAPL    19/03/2020  61,195      14/03/2020  NA    NA            3
AAPL    20/03/2020  57,310001   14/03/2020  NA    NA            4
AAPL    23/03/2020  56,092499   14/03/2020  NA    NA           NA
VISA    05/03/2020  186,960007  12/03/2020  NA    NA           NA
VISA    06/03/2020  184,360001  12/03/2020  NA    NA           -4
VISA    09/03/2020  171,130005  12/03/2020  NA    NA           -3
VISA    10/03/2020  182,600006  12/03/2020  NA    NA           -2
VISA    11/03/2020  172,949997  12/03/2020  NA    NA           -1
VISA    12/03/2020  160,080002  12/03/2020  1     12/03/2020    0
VISA    13/03/2020  175,830002  12/03/2020  NA    NA            1
VISA    16/03/2020  152,009995  12/03/2020  NA    NA            2
VISA    17/03/2020  157,889999  12/03/2020  NA    NA            3
VISA    18/03/2020  148,479996  12/03/2020  NA    NA            4
VISA    19/03/2020  152,25      12/03/2020  NA    NA           NA
VISA    20/03/2020  146,830002  12/03/2020  NA    NA           NA

但我真的不知道如何使这个新变量起作用。我已经尝试过我发现的另一个代码:

Kurse_Gesamt$New <- head(filter(c(rep(0, 4), Kurse_Gesamt$Event1, rep(0, 4)), 
                                   filter=-4:4)[-(4:4)], -4)

但我收到错误消息:

UseMethod("filter") 中的错误:'filter' 没有适用的方法 应用于“c('double', 'numeric')”类的对象

你能帮我创建变量吗?

非常感谢!

【问题讨论】:

  • 你能解释一下变量New应该如何构造吗?
  • 当然!变量“New”应在变量“Event1”= 1 的位置以 0 开头。从那里开始,新变量应该在一个方向上计数到 -4,在另一个方向上计数到 4。新变量“New”的所有其他值应为 NA。这个解释有用吗?

标签: r events window dummy-variable


【解决方案1】:

这是创建New 变量的一种方法 -

library(dplyr)

Kurse_Gesamt <- Kurse_Gesamt %>%
  group_by(Symbol) %>%
  mutate(New = row_number() - match(1, Event1),  
         New = ifelse(abs(New) > 4, NA, New)) %>%
  ungroup
Kurse_Gesamt
#   Symbol       Date      Close      Event Event1 Event1_date New
#1    AAPL 09/03/2020  66,542503 14/03/2020     NA        <NA>  NA
#2    AAPL 10/03/2020  71,334999 14/03/2020     NA        <NA>  -4
#3    AAPL 11/03/2020  68,857498 14/03/2020     NA        <NA>  -3
#4    AAPL 12/03/2020  62,057499 14/03/2020     NA        <NA>  -2
#5    AAPL 13/03/2020    69,4925 14/03/2020     NA        <NA>  -1
#6    AAPL 16/03/2020  60,552502 14/03/2020      1  16/03/2020   0
#7    AAPL 17/03/2020     63,215 14/03/2020     NA        <NA>   1
#8    AAPL 18/03/2020    61,6675 14/03/2020     NA        <NA>   2
#9    AAPL 19/03/2020     61,195 14/03/2020     NA        <NA>   3
#10   AAPL 20/03/2020  57,310001 14/03/2020     NA        <NA>   4
#11   AAPL 23/03/2020  56,092499 14/03/2020     NA        <NA>  NA
#12   VISA 05/03/2020 186,960007 12/03/2020     NA        <NA>  NA
#13   VISA 06/03/2020 184,360001 12/03/2020     NA        <NA>  -4
#14   VISA 09/03/2020 171,130005 12/03/2020     NA        <NA>  -3
#15   VISA 10/03/2020 182,600006 12/03/2020     NA        <NA>  -2
#16   VISA 11/03/2020 172,949997 12/03/2020     NA        <NA>  -1
#17   VISA 12/03/2020 160,080002 12/03/2020      1  12/03/2020   0
#18   VISA 13/03/2020 175,830002 12/03/2020     NA        <NA>   1
#19   VISA 16/03/2020 152,009995 12/03/2020     NA        <NA>   2
#20   VISA 17/03/2020 157,889999 12/03/2020     NA        <NA>   3
#21   VISA 18/03/2020 148,479996 12/03/2020     NA        <NA>   4
#22   VISA 19/03/2020     152,25 12/03/2020     NA        <NA>  NA
#23   VISA 20/03/2020 146,830002 12/03/2020     NA        <NA>  NA

【讨论】:

  • 非常感谢!不幸的是,我收到错误消息:“UseMethod(“group_by”)中的错误:没有适用于“group_by”的方法应用于类“function”的对象”,我不知道为什么。变量“symbol”的格式为“chr”。
  • 您需要将 df 替换为您的数据框名称,我认为是 Kurse_Gesamt
  • 你说得对,非常感谢!我对您的代码还有一个问题。结果在控制台中显示给我,但没有作为新变量添加到“Data_Gesamt”数据集中。有没有办法将它添加到数据集中,因为它也显示在控制台中?
  • 您需要将结果分配回数据框Kurse_Gesamt &lt;- ....。我已经在我的回答中完成了上述更改。
  • New = ifelse(abs(New) &gt; 4, NA, New) 更改为New = ifelse(between(New, -5, 15) &gt; 4, New, NA)
猜你喜欢
  • 2012-09-27
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2018-04-06
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多