【发布时间】:2016-11-13 21:28:09
【问题描述】:
我的 R 环境中有一个数据框,我想根据特定条件对其进行子集化 - 一种条件过滤器。我的数据框是 2004-2014 年间每一天的每日值的面板数据集。数据框中的每一天都是一个单独的观察值。一年有366天。我想对数据进行子集化,以便仅闰年保留面板数据中的第 366 天。该时间范围内有三个闰年 -2004、2008、2012。我有一个单独的列用于年份和年份。换句话说,我需要一个脚本来返回一个没有第 366 天的数据集,但只针对 2004 年、2008 年和 2012 年以外的每一年。
我已经设法通过以下方式完成此操作:我将我的日期和年份列粘贴在一起(例如“2006-366”)并简单地使用 dplyr 的过滤器命令来设置每年的子集(2005-366、2006-366、2007 -366、2009-366、2010-366、2011-366、2013-366、2014-366)。然而,这是一种非常粗糙的方法。我希望有人可以在这里为我指明正确的方向。这是一些可重现的数据以及我使用的工作流程。
#Create DF
year<-rep(c(2004:2014), each=366)
day<-rep(c(1:366))
df<-data.frame(day, year)
#My crude method
df $reduc<-paste(df$year, df$day, sep="-")
df <-df %>%
filter(reduc!="2005-366") %>%
filter(reduc!="2006-366") %>%
filter(reduc!="2007-366") %>%
filter(reduc!="2009-366") %>%
filter(reduc!="2010-366") %>%
filter(reduc!="2011-366") %>%
filter(reduc!="2013-366") %>%
filter(reduc!="2014-366")
【问题讨论】: