- remove the unnecessary columns from TT2
- change the name of the rainfall column to "Site_3"
- remove the "Site_3" column from TT1
- Merge the two cleaned-up time tables.
How to copy data from one timetable to another
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Corymbiamaculata
am 17 Mai 2019
Kommentiert: Peter Perkins
am 4 Jun. 2019
Hi all,
I have three timetables (called Tmin, Tmax, Prec) with daily meteorological variables at two measurement sites (Site 1 and Site 2; I will come back to Site 3 in a moment). The data are from 1st July 2018 to now. Here an example of the Prec timetable:
353×3 timetable
time Site_1 Site_2 Site_3
____________________ ______ ______ ____
01-Jun-2018 00:00:00 0.2 0.2 NaN
02-Jun-2018 00:00:00 0 0 NaN
03-Jun-2018 00:00:00 0 0 NaN
...
I'm trying to add data from a public weather station (Site 3, currently all NaNs) for the same period. These data are available online in monthly csv files which I import in a loop into monthly timetables:
30×3 timetable
Date MinimumTemperature__C_ MaximumTemperature__C_ Rainfall_mm_
__________ ______________________ ______________________ ____________
2018-06-01 4.1 13.3 0
2018-06-02 3.5 13.6 0.2
2018-06-03 4.3 13.8 0
What I'm trying to do is to copy Site 3 data from each monthly timetable into a respective row in column 3 of my main timetables (Tmin, Tmax, Prec).
1) Is there a simple function to do that?
2) Is it a problem that the date format isn't the same? If so, how can I change it?
Many thanks in advance for help!
0 Kommentare
Akzeptierte Antwort
Adam Danz
am 17 Mai 2019
Bearbeitet: Adam Danz
am 18 Mai 2019
Is there a simple function to do that?
Is it a problem that the date format isn't the same?
As long as they are in datetime format, it shouldn't be a problem.
There should be a way to specify that you want to merge the rainfall column of the second timetable (TT2) with the site_3 column of the first timetable (TT1) but after a brief search I haven't found that method (please leave comments if anyone finds it!). Alternatively you can:
That would look something like this:
% Remove columns in 2nd timetable that shouldn't be merged with table 1
TT2clean = removevars(TT2,{'MinimumTemperature__C_','MaximumTemperature__C_'});
% Rename Rainfall column to "Site_3"
TT2.Properties.VariableNames = strrep(TT2.Properties.VariableNames,'Rainfall_mm_','Site_3');
% Remove Site_3 from first timetable
TT1clean = removevars(TT1,'Site_3');
% Synchronize timetables
TT = synchronize(TT1clean,TT2clean);
3 Kommentare
Peter Perkins
am 4 Jun. 2019
There should be a way to specify that you want to merge the rainfall column of the second timetable (TT2) with the site_3 column of the first timetable (TT1) but after a brief search I haven't found that method
Subscripting, but your removevars is equivalent:
TTmin= synchronize(TTmin(:,1:2),TTsite3(:,"MinimumTemperature__C_ "));
TTmin.Properties.VariableNames("MinimumTemperature__C_ ") = "Site_3";
It would be possible (in this case) to use join, which does let you specify left and right variables. But in joining by time assumes both inputs have all the times of interest.
Corymbiamaculata, it is possible to put all three measurements for all three sites in one timetable, if that is convenient for you: Convert TTmin, TTmax, and TTprec to tables, then put them in a timetable. Something like
TT = timetable(Tmin, Tmax,Tprec,'RowTimes',dt)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Timetables finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!