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

问题描述 投票:-3回答:1

我有一个这样的数据框:

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

r filtering stata
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.