user3814595
user3814595

Reputation: 11

Create daily dataset using repeated monthly values

I am using the NAPM ISM data set from the FRED database. The data is monthly frequency. I would like to create another data frame with daily frequency where value each business day is the last monthly data release. So if last release of 49.5 on 02/01/16 then every day in February has a value of 49.5.

Code Sample

start_date <- as.Date("1970-01-01")
end_date <- Sys.Date()
US_PMI <- getSymbols("NAPM", auto.assign = FALSE, src ="FRED", from = start_date, to = end_date)
test <- data.frame(date=index(US_PMI), coredata(US_PMI))

Upvotes: 0

Views: 998

Answers (1)

bet.bom
bet.bom

Reputation: 336

I do not know which packages and data I need to reproduce your example but you can use a sequence of daily dates, the merge function and the NA filler in the zoo package to create the daily data frame:

library(zoo)

# Date range
sd = as.Date("1970-01-01")
ed = Sys.Date()

# Create daily and monthly data frame
daily.df   = data.frame(date = seq(sd, ed, "days"))
monthly.df = data.frame(date = seq(sd, ed, "months"))

# Add some variable to the monthly data frame
monthly.df$v = rnorm(nrow(monthly.df))

# Merge
df = merge(daily.df, monthly.df, by = "date", all = TRUE)

# Fill up NA's
df = transform(df, v = na.locf(v))

This might not be the fastest way to obtain the data frame but it should work.

Upvotes: 1

Related Questions