2016-11-02 3 views
0

Utilisation d'Octave J'ai créé une trame de données comme suit;Octave convertit la colonne de données d'une chaîne de date/heure en secondes

>> df=dataframe("example.csv") 
df = dataframe with 10 rows and 3 columns 
Src: example.csv 
_1       X1  X2  X3 
Nr      char double double 
1 2016-11-01 11:35:33.285127 1000 1205531 
2 2016-11-01 11:35:54.666606 2000 1205531 
3 2016-11-01 11:37:17.775407 3000 1205531 
4 2016-11-01 11:37:47.436518 4000 1205531 
5 2016-11-01 11:38:16.246998 5000 1205531 
6 2016-11-01 11:38:38.371844 6000 1205531 
7 2016-11-01 11:38:59.806459 7000 1205531 
8 2016-11-01 11:39:20.543602 8000 1205531 
9 2016-11-01 11:39:47.920399 9000 1205531 
10 2016-11-01 11:41:24.370811 10000 1205531 

Je cherche à convertir la colonne X1 à de secondes depuis l'époque (ou une mesure séquentielle similaire du temps, secondes au total depuis « le début du temps » serait aussi bien)

je peux obtenir ceci pour travailler avec un seul élément (je suppose que les ans est correct);

>> mktime(strptime(df.array(1,1),"%Y-%m-%e %T")) 
ans = 1.4780e+09 

Mais je n'ai pas beaucoup de chance d'essayer de convertir toute la colonne; J'ai essayé diverses permutations dans le sens de; Je cherche une expression qui me permettra de faire une assignation comme;

df(:,1)=expression() 
+0

Pouvez-vous s'il vous plaît créer un exemple complet qui crée un objet dataframe et remplit certaines valeurs? – Andy

+0

Salut Andy, j'ai mis à jour la question pour clarifier, et ajouté dans des données spécifiques à titre d'exemple. - Jusqu'à présent, je crois que la découverte de strptime ne fonctionnera pas de cette façon, et je devrai utiliser une boucle pour parcourir les éléments de la colonne. –

Répondre

1

J'utiliser:

format long #to see the differences  
x = cellfun (@(x) mktime (strptime(x, "%Y-%m-%e %T")), 
      cellstr (df.array(:,1))) 
x = 

    1477996533 
    1477996554 
    1477996637 
    1477996667 
    1477996696 
    1477996718 
    1477996739 
    1477996760 
    1477996787 
    1477996884 
+0

Salut Andy, ça a l'air génial mais j'ai toujours du mal à mettre la première colonne de la base de données à ces valeurs, ou à construire une nouvelle base de données avec la première et la deuxième colonne de la base de données originale. Frustrant! J'ai essayé df (:, 1) = new_col (erreur de TYPE) dataframe (new_col, df (:, 2: end)) (utilisez plutôt l'erreur CAT) et je ne peux pas faire fonctionner cat ou horzcat; - cat (1, new_col, df (:, 2: end)) (erreur num cols différente); cat (2, new_col, df (:, 2: end)) (erreur hors limite) ... –