Привет У меня есть некоторые данные, агрегированные на уровне четверти и есть столбец содержит данные, как это:R четверть изменение временной метки
> unique(data$fiscalyearquarter)
[1] "2012Q3" "2010Q3" "2012Q1" "2011Q4" "2012Q4" "2008Q1" "2008Q2" "2010Q4" "2010Q1"
[10] "2009Q2" "2012Q2" "2011Q3" "2013Q2" "2013Q1" "2011Q2" "2013Q4" "2009Q4" "2009Q3"
[19] "2011Q1" "2010Q2" "2013Q3" "2008Q4" "2009Q1" "2014Q1" "2008Q3" "2014Q2"
Я думал о написании функции, превратить строку в метку времени.
Что-то вроде этого, разделите строку на год и квартал, а затем заставьте квартал преобразовать в месяц (середина четверти).
convert <- function(myinput = "2008Q2"){
year <- substr(myinput, 1, 4)
quarter <- substr(myinput, 6, 6)
month <- 3 * as.numeric(quarter) - 1
date <- as.Date(paste0(year, sprintf("%02d", month), '01'), '%Y%m%d')
return(date)
}
Мне нужно преобразовать эти строки в формат даты, а затем проанализировать их оттуда.
> convert("2010Q3")
[1] "2010-08-01"
Есть ли какой-либо выход за пределы моего жесткого кодирования для анализа проблемы временных рядов на ежеквартальном уровне?
Важно ли, чтобы дата была вторым месяцем в квартале вместо первого? – GSee
@GSee, вы можете изменить свое решение на что-то вроде 'temp <- as.POSIXlt (as.yearqtr (x)); temp $ mon <- temp $ mon + 1; as.Date (temp) ' –
@DavidArenburg да, мы могли бы добавить месяц, но это плохая идея, чтобы модифицировать объекты POSIXlt вроде этого – GSee