Extraire les éléments de date de POSIXlt et les mettre dans le bloc de données dans R
Ma deuxième question du jour et ma dernière tentative d'utiliser R pour nettoyer ces données. Voici le sitrep:
J'ai un bloc de données qui a une colonne qui est une POSIXlt de type date. Je veux extraire le jour, le mois et l'année à partir de cette colonne et de créer 3 nouvelles colonnes appelé (intelligemment) le jour, le mois et l'année.
Le bloc de données qui ressemble à ceci:
order_id dd_mmm_yy
1 2005-07-28
2 2007-03-04
Je veux retrouver avec ceci:
order_id dd_mmm_yy day month year
1 2005-07-28 28 7 2005
2 2007-03-04 4 3 2007
J'ai créé une fonction pour extraire le jour, le mois et l'année et de les renvoyer dans une liste (ou un bloc de données, j'ai essayé les deux).
extractdate = function (date) {
day = format(date, format="%d")
month = format(date, format="%m")
year = format(date, format="%Y")
list(day=day, month=month, year=year)
}
Voici ce que j'ai essayé de base sur une version antérieure du problème et de la question:
cbind(orders, t(sapply(orders$dd_mmm_yy, extractdate)))
qui me donne ceci:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 5, 9
Le t(sapply... par lui-même me donne ce pour quelques fous raison:
day month year
sec Character,5 Character,5 Character,5
min Character,5 Character,5 Character,5
hour Character,5 Character,5 Character,5
mday Character,5 Character,5 Character,5
mon Character,5 Character,5 Character,5
year Character,5 Character,5 Character,5
wday Character,5 Character,5 Character,5
yday Character,5 Character,5 Character,5
isdst Character,5 Character,5 Character,5
Ce qui sur terre se passe? Suis-je mieux d'utiliser quelque chose comme Python ou Java pour faire toutes les manipulations de données que je dois faire sur ces données avant de l'amener dans R pour l'analyse?
source d'informationauteur Dave Kincaid
Vous devez vous connecter pour publier un commentaire.
POSIXlt
objets sont d'une liste de 9 composants (voir la section Détails de?POSIXlt
pour plus d'informations). Parce que ledd_mmm_yy
colonne estPOSIXlt
vous n'avez pas besoin d'une fonction pour extraire les composants. Vous pouvez simplement extraire les composants par leurs noms:Un liner à l'aide de
lubridate
Essayez ceci (DF vos données.frame):