Comme vous pouvez le constater dans le Dataframe ci-dessous, Rbloomberg renvoie NAS pour les dates de week-end.
Je veux supprimer toute la ligne si elle tombe un week-end. Comment ferais-je cela? P>
Je ne veux pas utiliser le na.omit em> car cela pourrait supprimer des rangées de semaine si / lorsque je reçois un NA y dans les données pour une raison légitime. p>
3 Réponses :
Convertissez la colonne de date sur un POSIXLT, par exemple
date$wday
La réponse de aveuglesse est correcte et utile car elle redevient les fonctions de base R.
De nombreux packages ont des emballages d'assistance supplémentaires. Voici un de Timeratedate qui nécessite une conversion à son type: P>
R> sapply(seq(as.Date("2011-01-01"),to=as.Date("2011-01-07"), by=1),getDayOfWeek) [1] 6 0 1 2 3 4 5 R> R> sapply(seq(as.Date("2011-01-01"),to=as.Date("2011-01-07"), by=1),getDayOfWeek) + %%6 == 0 [1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE R>
Pour l'exhaustivité, j'ajouterais à la réponse de Blondjesse qui en tapant? Les jours de semaine révèlent que R a des fonctions de base en semaine (), des mois () et des quartiers () qui fonctionnent à la fois sur les types de posix et de date, et sont je crois que vectorisés , donc cela fonctionnerait aussi:
!(weekdays(as.Date(date)) %in% c('Saturday','Sunday'))
Joran merci. Oui, je peux y aller c'est une belle alternative parcimonieuse. Que signifie%% en%? Est-ce "pas dans"? Désolé, je suis un python guy r est un peu nouveau pour moi.
% en% signifie vraiment "dans", dans le sens de "appartient à".