[英]Padding around dates in R to add missing/blank months?
padr R 包裝小插圖描述了不同的 package 函數以在所述日期和時間周圍填充日期和時間。
我的情況是,我將在數據幀中記錄事件(即dplyr::count()
)並且需要 plot 事件,在一段時間內... 1 年。 當我在低容量數據框中計算事件時,我經常會得到單行項目結果,如下所示:
library(tidyverse)
library(lubridate)
library(padr)
df <- tibble(col1 = as.Date("2018-10-01"), col2 = "g", col3 = 5)
#> # A tibble: 1 x 3
#> col1 col2 col3
#> <date> <chr> <dbl>
#> 1 2018-10-01 g 5
對於 plot 這與 ggplot,在一年的時間里,每月需要一個 12 行的數據框。 它基本上需要看起來像這樣:
#> # A tibble: 12 x 3
#> col1 col2 col3
#> <date> <chr> <dbl>
#> 1 2018-01-01 NA 0
#> 2 2018-02-01 NA 0
#> 3 2018-03-01 NA 0
#> 4 2018-04-01 NA 0
#> 5 2018-05-01 NA 0
#> 6 2018-06-01 NA 0
#> 7 2018-07-01 NA 0
#> 8 2018-08-01 NA 0
#> 9 2018-09-01 NA 0
#> 10 2018-10-01 g 5
#> 11 2018-11-01 NA 0
#> 12 2018-12-01 NA 0
或許padr()
可以通過一些thicken()
和pad()
函數的組合來做到這一點。 我的嘗試如下所示,第 3 行和第 4 行都沒有構建上面直接顯示的數據框。
如何使用padr()
、 lubridate()
、 tidyverse()
、 data.table()
、 base R
或任何你喜歡的方式直接構建上面的數據框? 如果需要說明,也不應考慮手動輸入每個月。 謝謝你。
df %>%
thicken("year") %>%
# pad(by = "col1") %>% # line 3
# pad(by = "col1_year") %>% # line 4
print()
library(lubridate)
library(tidyverse)
df <- tibble(col1 = as.Date("2018-10-01"), col2 = "g", col3 = 5)
my_year <- year(df$col1[1])
df2 <- tibble(col1 = seq(ymd(paste0(my_year,'-01-01')),ymd(paste0(my_year,'-12-01')), by = '1 month'))
df3 <- merge(df,df2, by ="col1",all.y=TRUE) %>% mutate(col3 = replace_na(col3,0))
df3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.