日時を検索値としてvlookupを使いたい
10 views (last 30 days)
Show older comments
こんにちは。
timestamp1の日時(検索値)と、
tableの2列目のtimestamp(参照値)と同じ行にあるtarget(抽出値)をvlookupで拾いたいのですが、
「the second parameter must be a string or numeric」とのエラーが出てしまいます。
おそらく、検索値と参照値がdatetime型であるからなのではないかと思うのですが、
どのように修正したらよいかが分かりません。
良い方法をご存知の方がいらっしゃいましたら、ご教示頂けますと嬉しいです。
AA = timestamp1; % 検索したいデータを指定
BB = zeros(size(AA)); % vlookupで拾う変数。検索したいデータのサイズと同じ0のmatrixを作成
CC = table;
k = 1;
for j = 1:length(AA)
v = vlookup(CC, AA(j), 1, 2); % (範囲m,検索値e,mからの取出し列,mの検索列)
if ~isempty(v)
BB(k) = v;
k = k+1;
end
end
Accepted Answer
Toru Ikegami
on 6 Sep 2021
こんにちは.
vlookup を使わない解をもうひとつ.テーブルをタイムテーブルに変換して使うというのはいかがでしょう.タイムテーブルを使うことで,許容誤差付きなど,わりと柔軟に時刻データを抽出することができます.
データをロードします.(ちょっと小細工をしていますが,これは.mat ファイルの中味の特定の変数を自分の作成した変数に代入するための細工です.変数名 table は table 型変数を作るために使う関数の名前(クラス名)にもなっているので,違う名前 tbl で受けたいのでこうしました.timestamp1 のほうはついでです.)
tbl = getfiled(load("table.mat"),"table");
ts = getfield(load("timestamp1.mat"),"timestamp1");
タイムテーブルに変換します.
tTbl = table2timetable(tbl,"RowTimes","timestamp_JST");
これで,datetime 型変数を使って希望の時刻のデータを抽出することができます.
data = tTbl.Target(ts(1))
もちろん,一括抽出も可能です.
data = tTbl.Target(ts)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!