将Stata转换为R:使用两个不同列的信息保留值

时间:2018-09-01 04:40:26

标签: r filtering stata

我有一个像这样的数据框:

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 :(得分:2)

作为R的初学者,以下内容可能没有多大意义。但实际上,我将date变量分为3个变量(yearmonthday),然后过滤到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