Ich habe einen Datenrahmen in meiner R-Umgebung, die ich möchte Teilmenge basierend auf einem bestimmten Kriterien-eine Art von bedingten Filter. Mein Datenrahmen ist ein Panel-Datensatz mit täglichen Werten für jeden Tag zwischen 2004-2014. Jeder Tag im Datenrahmen ist eine separate Beobachtung. Jedes Jahr hat 366 Tage. Ich möchte die Daten so unterteilen, dass nur die Schaltjahre den 366. Tag in den Paneldaten behalten. Es gibt drei Schaltjahre in diesem Zeitraum - 2004, 2008, 2012. Ich habe eine separate Spalte für das Jahr und den Tag des Jahres. Mit anderen Worten, ich brauche ein Skript, das einen Datensatz ohne den 366. Tag, aber nur für jedes Jahr außer 2004, 2008 und 2012 zurückgibt.Filter basierend auf bedingten Kriterien in r
Ich habe es geschafft, dies folgendermaßen zu erreichen: Ich klebte meinen Tag und Jahresspalten zusammen (zB "2006-366") und verwendet einfach dplyrs Filterbefehl zur Untermenge jedes Jahr (2005-366, 2006-366, 2007-366, 2009-366, 2010-366, 2011-366, 2013-366 , 2014-366). Dies ist jedoch eine schrecklich grobe Methode. Ich hatte gehofft, dass jemand mich hier in die richtige Richtung lenken könnte. Hier sind einige reproduzierbare Daten zusammen mit dem Workflow, den ich verwendet habe.
#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")