如果第一列值相同,这个问题是MatLab(或任何其他语言)转换矩阵或 csv 以将第二列值放入同一行的产物?和按第一列索引对不同行中的值进行分组
如果
A = [2 3 234 ; 2 44 99999; 2 99999 99999; 3 123 99; 3 1232 45; 5 99999 57]
1st column | 2nd column | 3rd column
--------------------------------------
2 3 234
2 44 99999
2 99999 99999
3 123 99
3 1232 45
5 99999 57
我要实现
1st col | 2nd col | 3rd col | 4th col | 5th col | 6th col| 7th col
--------------------------------------------------------------------
2 3 234 44
3 123 99 1232 45
5 57
也就是说,对于 A 的第 1 列中的每个数字,我想输入除“99999”之外的数字
如果我们忽略“除了 99999”部分,我们可以通过它们的第一列索引将不同行中的 Group 值编码为
[U, ix, iu] = unique(A(:,1));
vals = reshape(A(:, 2:end).', [], 1); %'// Columnize values
subs = reshape(iu(:, ones(size(A, 2) - 1, 1)).', [], 1); %'// Replicate indices
r = accumarray(subs, vals, [], @(x){x'});
但显然这段代码不会忽略 99999。
我想有两种方法
1. first make r, and then remove 99999
2. remove 99999 first, and then make r
不管怎样,我只想要更快的。
先感谢您!