9
votes

Supprimer les données de week-end dans un Dataframe

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?

Je ne veux pas utiliser le na.omit 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. xxx


0 commentaires

3 Réponses :


19
votes

Convertissez la colonne de date sur un POSIXLT, par exemple

date$wday


0 commentaires

4
votes

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> 


0 commentaires

20
votes

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'))


2 commentaires

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 à".