Split Climate Data for month and yers

3 visualizaciones (últimos 30 días)
Giacomo Moraglia
Giacomo Moraglia el 21 de Sept. de 2020
Comentada: Rik el 21 de Sept. de 2020
Hello! I have a problem. I created this table from a station file.txt:
DATE PRCP(mm) TMAX(°C) TMIN(°C)
19300101 0 20 -2
....
20200921 2 15 1
I need to split those data for Months and for Years:
es. months
193001(all days)
...
193101(all days)
es. years
1930 (all days)
...
2020(all days)
The outputs should be two matrices with 4 columns divided for month/year.
I have two ideas but i don't know how to proceed further:
1)convert date to string
2)Difference between consecutives days. (19300102-19300101=1 --> same month)
Can anyone help me? Thanks a lot!

Respuestas (1)

Rik
Rik el 21 de Sept. de 2020
d=19300101;
s=sprintf('%08d',d);
y=str2double(s(1:4));
m=str2double(s(5:6));
d=str2double(s(7:8));
Or even simpler:
d=19300101;
s=sprintf('%08d',d);
datetime(s,'InputFormat','yyyyMMdd')
The second one will even support cellstr input, so you can use arrayfun to convert everything in one fell swoop.
  4 comentarios
Giacomo Moraglia
Giacomo Moraglia el 21 de Sept. de 2020
Sorry, I am newbie and i did not know the findgroup function...
When i try using your script on the first column it only works for the first day.
Rik
Rik el 21 de Sept. de 2020
The first block of code I posted only works for scalars. For this time it doesn't really matter, but next time please post your code as code, instead of a screenshot.
The line below should work.
date_list=arrayfun(@(d)datetime(sprintf('%08d',d),'InputFormat','yyyyMMdd'),ALL);

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by