MatLab(或任何其他语言)转换矩阵或csv,如果第一列值相同,将第二列值放入同一行?

2024-10-06 11:23:34 发布

您现在位置:Python中文网/ 问答频道 /正文

例如我有

第1列|第2列

1             1
1             3
1             9
2             4
2             7

我想把它转换成

第1列|第2列|第3列|第4列

^{pr2}$

(3,4)元素应为空。在

我可以用Matlab用for和if来做,但是对于大量的数据,这需要太多的时间,所以我需要一个更优雅和更聪明的想法。在

我更喜欢Matlab,但其他语言也可以。(如果其他语言可以解决我的问题,我可以将矩阵导出到csv或xlsx或txt并使用其他语言。)

提前谢谢你!在

[更新]

如果

^{3}$

第1列|第2列|第3列

2             3          234
2             44         33
2             12         22
3             123        99
3             1232       45
5             224        57

然后跑步

    [U ix iu] = unique(A(:,1) ); r= accumarray( iu, A(:,2:3), [], @(x) {x'} )

会告诉我错误

    Error using accumarray
    Second input VAL must be a vector with one element for each row in SUBS, or a
    scalar.

我想

第1列|第2列|第3列|第4列|第5列|第6列|第7列

2         3        234       44        33        12        22
3         123      99        1232      45
5         224      57

我该怎么做?提前谢谢你!在


Tags: csv数据txt语言元素forif时间
1条回答
网友
1楼 · 发布于 2024-10-06 11:23:34

accumarray与自定义函数一起使用

>> r = accumarray( A(:,1), A(:,2), [], @(x) {x'} ); %//'
 r = 
  [1x3 double]
  [1x2 double]
>> r{1}
 ans =
  1     3     9
>> r{2}
 ans =
  4     7

更新:
将单元格r转换为矩阵B(满足注释中的进一步请求):

^{pr2}$

相关问题 更多 >