Рассчитать первую и последнюю дату для каждой переменной, используя R - PullRequest
1 голос
/ 05 ноября 2019

У меня есть набор данных, содержащий экономическую информацию по отдельным странам. Я хотел бы получить первую и последнюю дату для каждой переменной. Над набором данных

#I have this

country <- c("AT","AT","AT","AT","BE","BE","CY","CY","CY")
date_yq    <- c("2001Q1","2001 Q2","2001 Q3","2001 Q4","2003 Q2","2003 Q4","2006 Q1","2006 Q2","2006 Q3")
gdp     <- c(NA,NA,1.2,1.3,NA,2.7,3.1,3.2,3.3)
invest  <- c(NA,120,140,160,NA,210,NA,310,NA)
df      <- data.frame(country,date_yq,gdp,invest)
df$date_yq <- as.yearqtr(date_yq)
View(df)

# I would like to have this

country       <- c("AT","BE","CY")
gdp_min_date  <- c("2001Q3","2003 Q4","2006 Q1")
gdp_max_date  <- c("2001Q4","2003 Q4","2006 Q3")
invest_min_date  <- c("2001Q2","2003 Q4","2006 Q2")
invest_max_date  <- c("2001 Q4","2003 Q4","2006 Q2")
df_dates      <- data.frame(country,gdp_min_date,gdp_max_date,invest_min_date,invest_max_date)
View(df_dates)  

Можете ли вы предложить что-нибудь, чтобы решить эту проблему? Я искал вокруг, но я не мог найти никакого решения. Спасибо.

РЕДАКТИРОВАТЬ: Я не пытаюсь получить минимальное значение ВВП, но первая доступная дата для каждой страны.

1 Ответ

1 голос
/ 05 ноября 2019
library(dplyr)
df_dates <- df %>% 
  group_by(country) %>% 
  summarize(
    gdp_min_date = min(date_yq[!is.na(gdp)]),
    gdp_max_date = max(date_yq[!is.na(gdp)]), 
    invest_min_date =min(date_yq[!is.na(invest)]),
    invest_max_date =max(date_yq[!is.na(invest)])  
  )

df_dates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...