9
votes

Données de la date divisée (m / d / y) en 3 colonnes distinctes

J'ai besoin de convertir la date (format m / d / y) en 3 colonnes distinctes sur lesquelles j'espère exécuter un algorithme. (J'essaie de convertir mes dates en numéros de jour Julian). A vu cette suggestion pour un autre utilisateur de séparer les données dans plusieurs colonnes à l'aide de Oracle. J'utilise R et je suis entièrement coincé sur la façon de coder cela de manière appropriée. Serait A1, A2 ... représenter mes nouvelles en-têtes de colonne et quelle serait la différence de format avec la section "Set de mise à jour"?

 update <tablename> set A1 = substr(ORIG, 1, 4), 
                       A2 = substr(ORIG, 5, 6), 
                       A3 = substr(ORIG, 11, 6), 
                       A4 = substr(ORIG, 17, 5); 


0 commentaires

5 Réponses :


6
votes

Quicks:

  1. Les convertisseurs de date Julian existent déjà dans la base R, voir par exemple Aide (Julian) .

  2. Une approche peut être d'analyser la date comme un POSIXLT et de lire ensuite les composants. D'autres classes de date / heure et de paquets fonctionneront aussi mais il y a quelque chose à dire pour la base r.

  3. dates d'analyse comme une chaîne est presque toujours une mauvaise approche.

    Voici un exemple: xxx

    et bien sûr xxx


1 commentaires

Pour une lecture plus facile, les mois sont plus gentils comme mois.name [PLT [[[[[[["MON"]] + 1]



9
votes

Compte tenu de la variable de texte x, comme ceci:

> julian(as.Date(x,"%m/%d/%Y"))
[1] 11598
attr(,"origin")
[1] "1970-01-01"


0 commentaires

23
votes

J'utilise le format Format () Méthode pour Date de date Objets pour tirer les dates d'accueil dans R. Utilisation de Dirk's DateText , voici comment je voudrais Allez sur la rupture d'une date dans ses parties constitutives: xxx

qui donne: xxx

Notez ce que plusieurs autres ont dit; Vous pouvez obtenir les dates de Julian sans diviser les différentes composantes de la date. J'ai ajouté cette réponse pour montrer comment vous pourriez faire la brise si vous en aviez besoin pour autre chose.


0 commentaires

1
votes

HI GAVIN: Autre moyen [Utilisation de votre idée] est le suivant:

Le cadre de données que nous utiliserons est des huiles d'huile qui contiennent une variété de variables liées aux changements dans le temps des stocks de pétrole et de gaz. Les variables sont: p> xxx pré>

L'une des premières choses à faire est de changer le champ Emdate, qui est un vecteur entier, dans un vecteur de date. P>

ostocks<-cbind(dfdate,day,month,year,stocks)
colnames(ostocks)

"date"   "day"    "month"  "year"   "bpV"    "bpO"    "bpC"    "bpMN"   "bpMX"   "emdate" "emV"    "emO"    "emC"    "emMN"   "emMX" "chdate" "chV"   
"cbO"    "chC"    "chMN"   "chMX"


0 commentaires

4
votes

Pour convertir la date (format m / d / y) en 3 colonnes distinctes, considérez le format DF,

library(lubridate)
df$year <- year(ymd(df$date))
df$month <- month(ymd(df$date)) 
df$day <- day(ymd(df$date))
df
        date year month day
1 2018-01-02 2018     1   2
2 2018-02-20 2018     2  20
3 2018-03-23 2018     3  23


0 commentaires