How to extract the values of two datasets from the same date/time from two table ?

1 回表示 (過去 30 日間)
ehsan
ehsan 2018 年 5 月 25 日
編集済み: Akira Agata 2018 年 5 月 29 日
Dear all.
I have two big data sets with .mat format, each contains a table (an example of my data can be seen below). My real data are attached.
I would like to extract the values from the same date/time and also when the value of the third column of the second table is 40.
I am getting a little bit confusing to do all steps together.
date time tem wind
__________ ________ ______ ____
2015.06.05 05:10:00 16.677 0.74
2015.06.05 05:20:00 16.773 1.67
2015.06.05 05:30:00 16.915 1.3
2015.06.05 05:40:00 17.534 0.93
2015.06.05 05:50:00 18.2 0.37
t z height speed
__________ ________ ______ _____
2016-02-01 10:00:00 40 0.93
2016-02-01 10:00:00 50 NaN
2016-02-01 10:00:00 60 0.93
2016-02-01 10:00:00 70 1.65
2016-02-01 10:00:00 80 2.03
I know how to extract the data of the second table when the values of the third column is 40.
height = 40 ;
k = sodar_wind{:,3}== height ;
date = sodar_wind{:,1}(k);
time = sodar_wind{:,2}(k);
high = sodar_wind{:,3}(k);
Wind = sodar_wind{:,4}(k);
I appreciate if you could assist.

採用された回答

Akira Agata
Akira Agata 2018 年 5 月 29 日
編集済み: Akira Agata 2018 年 5 月 29 日
Looking at your data, year-month-day and hour-minute-second information are stored in different columns. In addition, data format for each table are not unified. So, I would recommend adjusting and unifying datetime data for each table before processing. The following is one example.
% Read the data
load('ZEL01.mat');
load('sodar_data.mat');
% Extract rows where "sodar_data.height == 40"
idx = sodar_data.height == 40;
sodar_data(~idx,:) = [];
% Unify datetime format for each table
ZEL01.date.Hour = ZEL01.time.Hour;
ZEL01.date.Minute = ZEL01.time.Minute;
ZEL01.date.Second = ZEL01.time.Second;
ZEL01.date.Format = 'yyyy-MM-dd HH:mm:ss';
ZEL01.time = [];
sodar_data.t.Hour = sodar_data.z.Hour;
sodar_data.t.Minute = sodar_data.z.Minute;
sodar_data.t.Second = sodar_data.z.Second;
sodar_data.t.Format = 'yyyy-MM-dd HH:mm:ss';
sodar_data.z = [];
% Extract the target data
T = innerjoin(ZEL01,sodar_data,'LeftKeys','date','RightKeys','t');
idx = T.height == 40;
T(~idx,:) = [];
The result looks like:
>> head(T)
ans =
8×5 table
date tem wind height speed
___________________ ______ ____ ______ _____
2016-02-01 10:00:00 6.204 0.56 40 NaN
2016-02-01 10:30:00 7.67 0 40 NaN
2016-02-01 11:00:00 8.593 0.37 40 NaN
2016-02-01 11:30:00 10.907 0.56 40 NaN
2016-02-01 12:00:00 13.882 7.79 40 NaN
2016-02-01 12:30:00 14.194 7.79 40 NaN
2016-02-01 13:00:00 13.882 8.35 40 NaN
2016-02-01 13:30:00 13.57 8.53 40 NaN

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeTables についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by