如何插入列并重复行,直到R中的下一个变量

问题描述 投票:0回答:2

例如,我有以下数据框(df1):

Date           Price
2020-01-01      500
2020-01-02      550
2020-01-03      480
2020-01-04      420
2020-01-07      450
2020-01-08      390
2020-01-09      430
2020-01-11      480
2020-01-12      490
2020-01-13      485

并且我想在上一个数据帧中插入“ Prince2”列,以便我重复该行直到下一个日期,但是此“下一个日期”不在df1数据帧上:

Date           Price2
2020-01-05       50
2020-01-10       20
2020-01-13       90

会是这样:

Date           Price     Price2
2020-01-01      500        50
2020-01-02      550        50
2020-01-03      480        50
2020-01-04      420        50
2020-01-07      450        20
2020-01-08      390        20
2020-01-09      430        20
2020-01-11      480        90
2020-01-12      490        90
2020-01-13      485        90

有人可以帮我吗?

r dataframe dplyr zoo
2个回答
0
投票

[这里是tidyversetidyr::fill的方法:

library(dplyr)
library(tidyr)
full_join(df1,df2) %>%
  arrange(Date) %>%
  tidyr::fill(Price2,.direction = "up") %>%
  dplyr::filter(!is.na(Price))
         Date Price Price2
1  2020-01-01   500     50
2  2020-01-02   550     50
3  2020-01-03   480     50
4  2020-01-04   420     50
5  2020-01-07   450     20
6  2020-01-08   390     20
7  2020-01-09   430     20
8  2020-01-11   480     90
9  2020-01-12   490     90
10 2020-01-13   485     90

0
投票

假定具有Price2的第二个数据帧称为df2

library(magrittr)

lapply(df2$Date,function(x){
  df2$Price2 * (df1$Date < x)
}) %>% 
do.call(what = "+")

它应该工作,如果没有请通知我。

© www.soinside.com 2019 - 2024. All rights reserved.