グループごとにretimeを適用する

日付とグループ番号が記載された2列のtimetableがあります。日付は2019/4~2020/3のもので、グループごとに欠損している日付が異なります。グループごとに欠損した日付をretimeで埋める方法はないでしょうか。

3 commentaires

Kojiro Saito
Kojiro Saito le 30 Nov 2021
サンプルデータをご提供できますか?
Hiro Yoshino
Hiro Yoshino le 30 Nov 2021
例えば
newTimetable = retime(oldTimetable,"regular","linear",...
"TimeStep",milliseconds(2));
とすると、2 ms で 再サンプリングできます。
ここを触って、日や時間で埋めることができます。ご参考まで。
涼輔 前田
涼輔 前田 le 30 Nov 2021
上のようなTというデータがあり、groupがグループ番号を示しています。
datacountが0の部分の日付はデータの中に入っておらず、全てのグループ番号に対して2019.4.1~2020.3.31の欠損している日付を埋めたいと考えています。

Connectez-vous pour commenter.

 Réponse acceptée

Kojiro Saito
Kojiro Saito le 30 Nov 2021
Modifié(e) : Kojiro Saito le 30 Nov 2021

1 vote

【編集後】
いただいたコメントでやりたいことが理解できました。
グループ番号毎にtimeが2019/4/1~2020/3/31で、datacountが0の配列(下記のコードでnewTで定義したもの)を作り、変数Tに含まれている日付とグループ番号の場合はTのdatacountを代入する方法です。
下記のコードで実現できると思います。
[g, groupId] = findgroups(T.group);
timeRange = datetime(2019,4,1):days(1):datetime(2020,3,31); % 2019/4/1~2020/3/31の1日毎の要素
% グループ番号毎にtimeが2019/4/1~2020/3/31で、datacountが0のテーブル
newT = table;
newT.time = repmat(timeRange, [1, length(groupId)])';
newT.datacount(:) = 0;
newT.group(:) = sortrows(repmat(groupId', [1, length(timeRange)])');
% 変数Tに含まれている日付とグループ番号の場合は、Tのdatacountを代入
for n=1:height(T)
idx = (T.time(n) == newT.time) & (T.group(n) == newT.group);
newT.datacount(idx) = T.datacount(n);
end
実行してnewTに所望のデータが格納されると思います。
【編集前】
変数Tにtimeとgroupがソートされた状態で格納されているようですので、グループ毎に処理させずにテーブルの全行について、time列で日付が欠損してNaTになっている部分をfillmissingで埋める方法でどうでしょうか。
T.time = fillmissing(T.time, 'nearest');

5 commentaires

涼輔 前田
涼輔 前田 le 30 Nov 2021
グループ毎にdatacountが0より大きいものが日付としてtimeに含まれており、0のものに関しては日付はNaTではなくそもそもデータに含まれておらず、含まれていない日付というのはグループ毎に異なります。説明不足で申し訳ございません。
Kojiro Saito
Kojiro Saito le 30 Nov 2021
やりたいことは、各グループ毎に2019.4.1~2020.3.31の日付に対して、Tに含まれていないdatacountが0より大きいものはテーブルTに格納されているものをそのまま使い、Tに含まれていない日付をdatacount0として追加するということでしょうか?
涼輔 前田
涼輔 前田 le 30 Nov 2021
それで間違いないです。 どうぞよろしくお願い致します。
Kojiro Saito
Kojiro Saito le 30 Nov 2021
やりたいことが理解できましたので、回答を更新いたしました。こちらでいかがでしょうか。
涼輔 前田
涼輔 前田 le 4 Déc 2021
Modifié(e) : 涼輔 前田 le 5 Déc 2021
ありがとうございます。
Tが膨大な行のデータの場合、処理中から計算が終了しないのですが解決策はあるでしょうか。
よろしくお願いいたします。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Tags

Community Treasure Hunt

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

Start Hunting!