我怎样才能提取独特的双矩阵在相反的顺序吗?

4视图(30天)
嗨。
这是我的简单的例子。
1 1 2
2 1 4
3 2 1
4 2 3
5 3 2
6 4 1
假设 第2列 第三列 代表代理的ID 第1列 代表独特的ID。
请注意, 第1行 第三行 基本上是相同的,他们有不同的ID。
我想要下面的矩阵。
1 1 2 3
2 1 4 6
3 2 1 1
4 2 3 5
5 3 2 4
6 4 1 2
我想让这一事实对revesre顺序是相同的。
谢谢你!

接受的答案

Siwon Ryu
Siwon Ryu 2021年6月18日
我认为你可以使用后加入你的数组转换成表。
首先,找到独特的双前三列的组合。这个过程防止加入后总行数的变化。
然后,右连接(因为ID表只包括两个ID的不同值,内部和外部连接都将工作)惟一的ID表原始表的两个键:column2和3按照相反的顺序。看到这个:
= (1 1 2;2、1、4;3、2、1;4、2、3、5、3、2、6、4、1]
%找到独特的双指数
独特A_ID = ((:, 1:3),“行”)
%转换为表
T_ID = array2table (A_ID)
T_ID.Properties.VariableNames (1:3) = {“ID”,“ID1”,“ID2”}
T_ID_tg = array2table ((:, (1、3、2)))
T_ID_tg.Properties.VariableNames (1:3) = {“ID”,“ID1”,“ID2”}
%连接
T =加入(T_ID_tg T_ID,“钥匙”,{“ID1”,“ID2”})
%转换为数组
A_result = T {:,:}

更多的答案(2)

彰Agata
彰Agata 2021年6月18日
以下方式如何?
= (
1 1 2;
2 1 4;
3 2 1;
4 2 3;
5 3 2;
6 4 1];
B = (:, (3 - 2));
(~,loc) = ismember ((: 2:3), B,“行”);
一个= (,loc);
> >
一个=
1 1 2 3
2 1 4 6
3 2 1 1
4 2 3 5
5 3 2 4
6 4 1 2

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2021年6月18日
如果你使用一个表,您可以使用 加入
= [1 1 2
2 1 4
3 2 1
4 2 3
5 3 2
6 4 1];
ID = (: 1);
Agent1 = (:, 2);
Agent2 = (:, 3);
TA =表(ID、Agent1 Agent2);
结核病=表(ID、Agent2 Agent1);
%连接表
joinedData = outerjoin(助教、结核病、“类型”,“左”,“LeftKeys”,(“Agent1”,“Agent2”),
“RightKeys”,(“Agent2”,“Agent1”),“MergeKeys”,真正的)
joinedData =6×4表
ID_TA Agent1 Agent2 ID_TB _____ ______ ______ _____1 1 2 3 2 4 6 3 2 1 1 2 3 4 5 5 3 2 4 6 4 1 2

类别

找到更多的在矩阵和数组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!