簡體   English   中英

在 R 中添加直到今天日期的行

[英]Add rows until today's date in R

所以我有這種 R 數據幀,只有一個 obs:

日期 公司
2017-08-18 蘋果

所需 output

我想在今天之前添加行:

日期 公司
2017-08-18 蘋果
2017-08-19 蘋果
2017-08-20 蘋果
. .
. .
. .
2021-05-26 蘋果

這樣每次啟動代碼時,都會以實際日期完成。 可能嗎? 如果是的話,是否可以將其作為 function 自動化,以便我只需幾行代碼就可以將其應用於我的所有數據集?

更新

當數據框中有多個日期時,如何做同樣的事情,例如:

日期 公司
2021-05-24 AMZ
2021-05-25 AMZ

我們可以通過在seq中指定fromtoby來創建日期seq ,並使用data.frame和從數據中提取的 'company' 列進行包裝(因為它已經指定為單行 - 它會被回收)

date <- seq(as.Date(df1$date), Sys.Date(), by = '1 day')
data.frame(date, company = df1$company)

如果有不止一行,一個選項是使用rowwise

library(dplyr)
library(tidyr)
df1 %>%
   mutate(date = as.Date(date)) %>%
   rowwise %>%
   mutate(date = list(seq(date, Sys.Date(), by = '1 day'))) %>%
   ungroup %>%
   unnest(date)

或與map

library(purrr)
df1 %>%
    mutate(date = map(as.Date(date), ~ seq(.x, Sys.Date(), by = '1 day'))) %>%
    unnest(date)  

或者也可以使用complete

df1 %>%
   group_by(company) %>%
   complete(date = seq(min(as.Date(date)), Sys.Date(), by = '1 day'))     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM