csvインポート時に​、日付をシリアル値で​インポートしたい

17 ビュー (過去 30 日間)
Yu
Yu 2021 年 8 月 24 日
コメント済み: Yu 2021 年 8 月 26 日
csvをインポートする際に、日付の列のみをシリアル値で読み込みたいのですが、方法が分かりませんでした。
行列、テーブル双方の場合でも可能な場合、それぞれの方法をご教示頂けますと嬉しいです。
現状思いつくのですと、以下のような手順になり、もっと簡単な方法がないかと思っています。
①csvをtableでインポート(日付はdatetime指定)
②日付をdatenumでシリアル値に変換
③日付以外のデータと再度合体

採用された回答

Hernia Baby
Hernia Baby 2021 年 8 月 24 日
楽したいのでアプリを活用します
以下のコードはインポート機能を使ってそれをライブスクリプト化したものです
MATLABのフォルダーからBook4.csvをダブルクリックしてインポートアプリを立ち上げてください
ライブスクリプトの生成で以下のコードが生成されます
opts = delimitedTextImportOptions("NumVariables", 6, "Encoding", "UTF-8");
% 範囲と区切り記号の指定
opts.DataLines = [2, Inf];
opts.Delimiter = ",";
% 列名と型の指定
opts.VariableNames = ["Ping_index", "Distance_gps", "Distance_vl", "Ping_date", "Ping_time", "Ping_milliseconds"];
opts.VariableTypes = ["double", "double", "double", "datetime", "datetime", "double"];
% ファイル レベルのプロパティを指定
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% 変数プロパティを指定
opts = setvaropts(opts, "Ping_date", "InputFormat", "yyyy/MM/dd");
opts = setvaropts(opts, "Ping_time", "InputFormat", "HH:mm:ss");
% データのインポート
Book4 = readtable("Book4.csv", opts);
% 一時変数のクリア
clear opts
ここでシリアル値を付け加えます(コードを書いたのはここだけ)
Book4.Ping_date_S = datenum(Book4.Ping_date);
Book4
Book4 = 5×7 table
Ping_index Distance_gps Distance_vl Ping_date Ping_time Ping_milliseconds Ping_date_S __________ ____________ ___________ __________ _________ _________________ ___________ 151 0.38823 526.1 2021/07/07 12:12:58 432 7.3834e+05 152 0.39168 526.1 2021/07/07 12:13:01 433 7.3834e+05 153 0.39514 526.11 2021/07/07 12:13:04 434 7.3834e+05 154 0.3986 526.11 2021/07/07 12:13:07 436 7.3834e+05 155 0.40207 526.11 2021/07/07 12:13:10 437 7.3834e+05
  1 件のコメント
Yu
Yu 2021 年 8 月 26 日
返信が遅くなりすみません。
なるほど、既存の日付と置き換えるのではなく、シリアル値の列を新たに追加するということですね。
Tableへの新たな列の追加方法についても勉強になりました。(新たにテーブルを作って、2つのテーブルをくっつけるというやり方をしていました)
ご回答くださりありがとうございました!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Find more on データ型の変換 in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!