Wie kategorisiere ich jede Zeile in einem großen R-Datenrahmen (> 2 Millionen Zeilen) basierend auf Datumsbereichsdefinitionen in einem separaten, viel kleineren R-Datenrahmen (12 Zeilen)?kategorisieren basierend auf Datumsbereichen in R
Mein großer Datenrahmen erfaßt, sieht ähnlich wie wenn über head(captures)
genannt:
id date sex
1 160520 2016-11-22 1
2 1029735 2016-11-12 1
3 1885200 2016-11-05 1
4 2058366 2015-09-26 2
5 2058367 2015-09-26 1
6 2058368 2015-09-26 1
Mein kleinen Datenrahmen, Jahreszeiten, sieht ähnlich aus wie das in seiner Gesamtheit:
Season Opening.Date Closing.Date
2016 2016-09-24 2017-01-15
2015 2015-09-26 2016-01-10
2014 2014-09-27 2015-01-11
2013 2013-09-28 2014-01-12
2012 2012-09-22 2013-01-13
2011 2011-09-24 2012-01-08
2010 2010-09-25 2011-01-16
2009 2009-09-26 2010-01-17
2008 2008-09-27 2009-01-18
2007 2007-09-22 2008-01-13
2006 2006-09-23 2007-01-14
2005 2005-09-24 2006-01-15
Ich muß Fügen Sie meinem Captures-Datenrahmen eine "Saison" -Spalte hinzu, in der der Wert anhand von if und wo captures$date
in den in den Jahreszeiten definierten Bereichen ermittelt wird.
Hier ist eine lang-hand-Lösung, die ich für mich nicht funktioniert, weil mein Datenrahmen so groß ist.
#add packages
library(dplyr)
library(lubridate)
#make blank column
captures$season=NA
for (i in 1:length(seasons$Season)){
for (j in 1:length(captures$id{
captures$season[j]=ifelse(between(captures$date[j],ymd(seasons$Opening.Date[i]),ymd(seasons$Closing.Date[i])),seasons$Season[i],captures$season[j])
}
}
Auch dies funktioniert nicht für mich, da R jedes Mal abstürzt. Ich erkenne auch, dass dies die Vektorisierung in R nicht nutzt. Jede Hilfe hier wird geschätzt!
oder vielleicht 'c.date zwischen s.Opening_Date und s.Closing_Date' als die' where' Klausel. Außerdem müssen Sie die Variablennamen nicht ändern, wenn Sie sie ausschließen, indem Sie sie in doppelte Anführungszeichen setzen oder sie mit [...] umgeben. –