我有一个4016 x 4的单元格,名为' totalSalesCell'。前两列包含文本,其余两列是数字。
1st field CompanyName
2nd field UniqueID
3rd field NumberItems
4th field TotalValue
在我的代码中,我有一个循环,它在过去一个月的每周步骤中进行 - 即4循环。
在每个循环中,我的代码返回一个与totalSalesCell结构相同的单元格,名为weeklySalesCell,它通常包含与totalSalesCell不同的行数。
我需要做两件事。首先,如果weeklySalesCell包含一个不在totalSalesCell中的公司,则需要将其添加到totalSalesCell,我相信下面的代码将为我做。
co_list = unique([totalSalesCell(:, 1); weeklySalesCell (:, 1)]);
index = ismember(co_list, totalSalesCell(:, 1));
new_co = co_list(index==0, :);
totalSalesCell = [totalSalesCell; new_co];
我需要做的第二件事是不确定最好的方法是将weeklySalesCell数字字段添加到totalSalesCell。如上所述,单元格将在90%的时间具有不同的行号,因此不能应用简单的添加。以下是我希望实现的一个例子。
totalSalesCell weeklySalesCell Result
co_id sales_value co_id sales_value co_id sales_value
23DFG 5 DGH84 3 23DFG 5
DGH84 6 ABC33 1 DGH84 9
12345 7 PLM78 4 ABC33 1
PLM78 4 12345 3 12345 10
KLH11 11 PLM78 8
KLH11 11
答案 0 :(得分:1)
我相信以下代码必须处理您的两项任务 -
[x1,x2] = ismember(totalSalesCell(:,1),weeklySalesCell(:,1))
corr_c2 = nonzeros(x1.*x2)
newval = cell2mat(totalSalesCell(x1,2)) + cell2mat(weeklySalesCell(corr_c2,2))
totalSalesCell(x1,2) = num2cell(newval)
excl_c2 = ~ismember(weeklySalesCell(:,1),totalSalesCell(:,1))
out = vertcat(totalSalesCell,weeklySalesCell(excl_c2,:)) %// desired output
输出 -
out =
'23DFG' [ 5]
'DGH8444' [ 9]
'12345' [10]
'PLM78' [ 8]
'KLH11' [11]
'ABC33' [ 1]