[英]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
中指定from
、 to
和by
來創建日期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.