如何使用dpylr和lubridate添加依赖于最后一行的行?

如何使用dpylr和lubridate添加依赖于最后一行的行?,r,dplyr,lubridate,R,Dplyr,Lubridate,打开/关闭分钟价格数据。下一分钟的开放始终等于上一分钟的关闭。示例性数据集: dt open close 1998-01-02 09:30:00 100 101 1998-01-02 09:31:00 101 102 ... 1998-01-02 15:59:00 105 106 在最后一行之后,我想添加另一行,如下所示: dt open close 1998-01-02 09:30:00 100

打开/关闭分钟价格数据。下一分钟的开放始终等于上一分钟的关闭。示例性数据集:

dt                   open  close
1998-01-02 09:30:00  100   101
1998-01-02 09:31:00  101   102
...
1998-01-02 15:59:00  105   106
在最后一行之后,我想添加另一行,如下所示:

dt                   open  close
1998-01-02 09:30:00  100   101
1998-01-02 09:31:00  101   102
...
1998-01-02 15:59:00  105   106
1998-01-02 16:00:00  106   NA
也就是说,时间戳增加一分钟,打开等于前一分钟关闭,关闭等于NA。我的天真方法不起作用:

library(lubridate)
library(dplyr)

data <- add_row(data, dt = max("dt") + minute(1), open = close[[n()]])
库(lubridate)
图书馆(dplyr)

数据首先,您应该使用
minutes
(创建时段)而不是
minute
(用于获取日期时间的分钟分量)。其次,在
add_row
中,您不能像在其他
dplyr
函数中那样使用字符串或列名引用
data
中的列

一种方法是:

> data <- data %>% add_row(dt = max(.$dt) + minutes(1), open = last(.$close))
> data
# A tibble: 4 x 3
  dt                   open close
  <dttm>              <int> <int>
1 1998-01-02 09:30:00   100   101
2 1998-01-02 09:31:00   101   102
3 1998-01-02 15:59:00   105   106
4 1998-01-02 16:00:00   106    NA

首先,您应该使用
minutes
(创建时间段)而不是
minute
(用于获取日期时间的分钟部分)。其次,在
add_row
中,您不能像在其他
dplyr
函数中那样使用字符串或列名引用
data
中的列

一种方法是:

> data <- data %>% add_row(dt = max(.$dt) + minutes(1), open = last(.$close))
> data
# A tibble: 4 x 3
  dt                   open close
  <dttm>              <int> <int>
1 1998-01-02 09:30:00   100   101
2 1998-01-02 09:31:00   101   102
3 1998-01-02 15:59:00   105   106
4 1998-01-02 16:00:00   106    NA

我们也可以使用
bind\u行

library(tidyverse)
data %>% 
  summarise(dt = max(dt) + minutes(1), open = last(close)) %>% 
  bind_rows(data, .)
# A tibble: 4 x 3
#  dt                   open close
#  <dttm>              <int> <int>
#1 1998-01-02 09:30:00   100   101
#2 1998-01-02 09:31:00   101   102
#3 1998-01-02 15:59:00   105   106
#4 1998-01-02 16:00:00   106    NA
库(tidyverse)
数据%>%
总结(dt=最大(dt)+分钟(1),打开=最后(关闭))%>%
绑定_行(数据,.)
#一个tibble:4x3
#dt开闭
#                 
#1 1998-01-02 09:30:00   100   101
#2 1998-01-02 09:31:00   101   102
#3 1998-01-02 15:59:00   105   106
#4 1998-01-02 16:00:00 106北美

我们也可以使用
绑定行

library(tidyverse)
data %>% 
  summarise(dt = max(dt) + minutes(1), open = last(close)) %>% 
  bind_rows(data, .)
# A tibble: 4 x 3
#  dt                   open close
#  <dttm>              <int> <int>
#1 1998-01-02 09:30:00   100   101
#2 1998-01-02 09:31:00   101   102
#3 1998-01-02 15:59:00   105   106
#4 1998-01-02 16:00:00   106    NA
库(tidyverse)
数据%>%
总结(dt=最大(dt)+分钟(1),打开=最后(关闭))%>%
绑定_行(数据,.)
#一个tibble:4x3
#dt开闭
#                 
#1 1998-01-02 09:30:00   100   101
#2 1998-01-02 09:31:00   101   102
#3 1998-01-02 15:59:00   105   106
#4 1998-01-02 16:00:00 106北美