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

3 views (last 30 days)
Ethan on 12 Nov 2013
Edited: Azzi Abdelmalek on 12 Nov 2013
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 on 12 Nov 2013
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)
Azzi Abdelmalek on 12 Nov 2013
Edited: Azzi Abdelmalek on 12 Nov 2013
Ethan commented
Thanks a bunch! working like a charm.

Azzi Abdelmalek on 12 Nov 2013
Edited: Azzi Abdelmalek on 12 Nov 2013
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))))]