Saya memiliki set data data tarif hipotek mingguan.

Data terlihat sangat sederhana:

library(tibble)
library(lubridate)

df <- tibble(
  Date = as_date(c("2/7/2008 ", "2/14/2008", "2/21/2008", "2/28/2008", "3/6/2008"), format = "%m/%d/%Y"),
  Rate = c(5.67, 5.72, 6.04, 6.24, 6.03)
)

Saya mencoba mengelompokkannya dan meringkas berdasarkan bulan.

postingan blog dan jawaban ini bukan yang saya inginkan, karena mereka hanya menambahkan kolom bulan .

Mereka memberi saya output:

month         Date     summary_variable
2008-02-01  2008-02-07  5.67        
2008-02-01  2008-02-14  5.72        
2008-02-01  2008-02-21  6.04        
2008-02-01  2008-02-28  6.24    

Output yang saya inginkan (idealnya hari terakhir bulan itu):

Month  Average rate
2/28/2008   6
3/31/2008   6.1
4/30/2008   5.9

Pada output di atas saya memasukkan angka acak, bukan perhitungan nyata.

1
Anakin Skywalker 20 November 2020, 02:29

1 menjawab

Jawaban Terbaik

Kita bisa mendapatkan bulan diekstraksi sebagai kolom dan melakukan grup dengan cara

library(dplyr)
library(lubridate)
library(zoo)
df1 %>%
  group_by(Month = as.Date(as.yearmon(mdy(DATE)), 1)) %>% 
  summarise(Average_rate = mean(MORTGAGE30US))

-keluaran

# A tibble: 151 x 2
#   Month      Average_rate
#   <date>            <dbl>
# 1 2008-02-29         5.92
# 2 2008-03-31         5.97
# 3 2008-04-30         5.92
# 4 2008-05-31         6.04
# 5 2008-06-30         6.32
# 6 2008-07-31         6.43
# 7 2008-08-31         6.48
# 8 2008-09-30         6.04
# 9 2008-10-31         6.2 
#10 2008-11-30         6.09
# … with 141 more rows
3
akrun 19 November 2020, 23:49