How to consolidate rows with same value, while adding their cells?

I have NOAA climate data reported every 15 minutes and need to consolidate it into daily info. I want to add cells at the end of a row together that have the same date, and make a new matrix with the 'summed' and consolidated info. Here is a rough example of what I want to do:
FROM:
[date, precip
2/1, 4
2/1, 5
2/1, 6
2/2, 2
2/2, 3
2/2, 1
2/2, 4]
TO:
[date, precip
2/1, 15
2/2, 10]

 採用された回答

Doug Hull
Doug Hull 2013 年 11 月 12 日

1 投票

clear
d = {'date', 'precip'; '2/1', 4; '2/1', 5; '2/1', 6; '2/2', 2; '2/2', 3; '2/2', 1; '2/2',4}
dates = {d{2:end,1}};
amount = [d{2:end,2}];
[uniqueDates, firstInd, allInd] = unique(dates);
for i = 1:numel(firstInd)
totalRain(i) = sum(amount(allInd == i));
end
disp(uniqueDates)
disp(totalRain)

1 件のコメント

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 11 月 12 日
編集済み: Azzi Abdelmalek 2013 年 11 月 12 日
Ethan commented
Thanks a bunch! working like a charm.

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 11 月 12 日
編集済み: Azzi Abdelmalek 2013 年 11 月 12 日

0 投票

s = { '2/1', 4; '2/1', 5; '2/1', 6; '2/2', 2; '2/2', 3; '2/2', 1; '2/2',4}
[a,b,c]=unique(s(:,1),'stable')
out=[a num2cell(accumarray(c,cell2mat(s(:,2))))]

カテゴリ

ヘルプ センター および File ExchangeClimate Science and Analysis についてさらに検索

タグ

質問済み:

2013 年 11 月 12 日

編集済み:

2013 年 11 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by