首页 > 解决方案 > 将 Stata 转换为 R:使用两个不同列的信息保存值

问题描述

我有一个这样的数据框:

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 中做。

标签: rfilteringstata

解决方案


作为 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

推荐阅读