Перевести Stata в R: хранение значений с использованием информации двух разных столбцов - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть такой фрейм данных:

df <- data.frame(date= c("2011-11-01", "2011-11-01", "2011-11-01", "2011-11-01"), 
                 reference_year=c(2011, 2012, 2013, 2014), 
                 mean=c(6.49, 5.55, 5.05, 4.87))

Поэтому я хотел бы создать новый фрейм данных со средним значением в тех случаях, когда год даты (2011) будет равен году даты + 1 (2012).

Используя Stata, я просто использовал этот код:

gen eventtime=date(date, "YMD")
gen day=day(eventtime)
gen month=month(eventtime)
gen yr=year(eventtime)    
keep if reference_year == yr+1    
collapse (first) mean date, by(eventtime)

Однако, как начинающий R, я бы хотел заниматься в R.

1 Ответ

0 голосов
/ 01 сентября 2018

Как начинающий R, следующее может не иметь большого смысла. Но, по сути, я делю переменную date на 3 переменные (year, month, day) и затем фильтрую до reference_year - 1. %>% называется "труба" и может читаться как "и затем сделать это".

library(tidyverse)
df <- data.frame(date= c("2011-11-01", "2011-11-01", "2011-11-01", "2011-11-01"), 
                 reference_year=c(2011, 2012, 2013, 2014), 
                 mean=c(6.49, 5.55, 5.05, 4.87))

new_df <- df %>% 
  separate(date, c("year", "month", "day"), sep = "-") %>% 
  filter(year == (reference_year - 1))
#>   year month day reference_year mean
#> 1 2011    11  01           2012 5.55
...