web-dev-qa-db-fra.com

Sous-ensemble de données.table définie par plage de dates dans R

J'ai un grand ensemble de données dans data.table que je voudrais sous-ensemble par une plage de dates. Mon ensemble de données ressemble à ceci:

testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
                                     "2013-10-05","2013-11-06")), 
                      yr = c(2013,2013,2013,2013,2013), 
                      mo = c(07,08,09,10,11),
                      da = c(02,03,04,05,06), 
                      plant = LETTERS[1:5], 
                      product = as.factor(letters[26:22]), 
                      rating = runif(25))

J'aimerais pouvoir choisir une plage de dates directement à partir du as.Date colonne sans utiliser les colonnes yr, mo ou da. Actuellement, je sous-ensemble par mo et c'est parfois très maladroit, surtout quand les années changent. Une méthode plus élégante de le faire me faciliterait infiniment la vie.

Merci d'avance!

26
black_sheep07

Pourquoi pas:

testset[date>="2013-08-02" & date<="2013-11-01"]
31
Troy

Voir également:

?`%between%`

Fonctionne comme ceci:

testset[date %between% c("2013-08-02", "2013-11-01")]
16
Daniel Krizian

Vous avez mentionné que vous sous-ensemble, mais ce n'est pas clair si vous utilisez le sous-ensemble fn dans R.

Tapez? Subset dans la console R pour voir les détails de la fonction subset () dans R qui "renvoie un sous-ensemble de vecteurs, matrices ou trames de données qui remplissent les conditions". Ensuite, utilisez une partie de la méthode que Troy a publiée ci-dessus pour choisir la plage de dates

thisYear <- subset(testset, date > "2015-01-01" & date < "2015-12-31")
4
typeofgraphic