How to convert irregular daily data to annual data?

9 次查看(过去 30 天)
Hi All!
I have a dataset (excel file attached - pcr.xlsx) of daily data values. The values are expressed as "Tonnes". I wanted to convert these to annual data from 1959 till date. My issue is that the daily data are irregular i.e. each year does not contain 365/366 values, so I am confused on how to directly get the answer (if each year had constant number of data points - 365, I think it would be easier).
I did try the "convert2annual" function but had no luck with it. I would appreciate some help in this regard. Thank you!

采纳的回答

Chunru
Chunru 2022-8-19
编辑:Chunru 2022-8-19
T = readtable("https://www.mathworks.com/matlabcentral/answers/uploaded_files/1101770/pcr.xlsx");
T(T.Tonnes == 0, :) =[]; % remove rows where Tonnes == 0
head(T)
ans = 8×2 table
Dates Tonnes ______________ ______ {'25-07-1959'} 319.76 {'25-07-1959'} 319.76 {'25-07-1959'} 4268.3 {'25-07-1959'} 2926.8 {'25-07-1959'} 3963.4 {'25-07-1959'} 1585.4 {'25-07-1959'} 975.7 {'25-07-1959'} 1524.4
T1 = timetable(datetime(T.Dates, "InputFormat", 'dd-MM-yyyy'), T.Tonnes);
T1.Properties.VariableNames = "Tonnes";
T2 = retime(T1, 'yearly', 'mean')
T2 = 61×1 timetable
Time Tonnes ___________ ______ 01-Jan-1959 1425.8 01-Jan-1960 2580.8 01-Jan-1961 1813.5 01-Jan-1962 2659.8 01-Jan-1963 1656.8 01-Jan-1964 1409.7 01-Jan-1965 1727.9 01-Jan-1966 1271.6 01-Jan-1967 1430.1 01-Jan-1968 1102.1 01-Jan-1969 1678.4 01-Jan-1970 1316.5 01-Jan-1971 1369.1 01-Jan-1972 1329.6 01-Jan-1973 1031.2 01-Jan-1974 1420.3
  3 个评论

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by