在 MATLAB 中,如何比较两行之间的差异
In MATLAB, how do you compare the difference between two rows
一个输入是一个ID号多次出现的数据文件。 (e.g ID# 123) 现在我想要的是收集所有具有相同 ID 号的行,逐列比较,看看它们在哪一列有差异。
现在,我将转到下一个多次出现的 ID 号(例如 ID#456)并执行相同的操作。
我重复一切,直到我完成多次出现的最后一个 ID 号。
所以我的输出会是这样的,
(1)列headers将是相同的。
(2) ID# 列将具有唯一的条目。只有多次出现的 ID 号才会包含在该列中。
(3)我将添加一个额外的列,其条目包含 ID 号出现的次数。例如,如果出现 5 次,则条目为 5。
(4)对于其他列,如果该列对于某个 ID 号的所有出现都有相同的条目,我们写“0”,否则写“1”。例如。如果对于 ID#123,列 "Section" 中的条目对于所有出现的 ID#123 都是相同的,那么对于我们的输出 table,列 "Section" 将包含值“ 0”。如果有任何差异,输出将是“1”
你的问题不是很清楚,但我想你想计算唯一值的数量和唯一行出现的次数。下面的 table 可能证明了这一点。
+-------+---------+-----+----------+---------------------+
| ID | Column1 | ... | Column n | num of occurrencies |
+-------+---------+-----+----------+---------------------+
这可以通过 unique and accumarray
来完成
在下面的示例中,A
是原始数据,output
是您想要的输出。 output
的前 n
列是您的唯一数据,最后一列包含此行出现的次数。 [1 5]
行出现了两次,[2 3]
出现了一次等等
A = [1 5
1 5
2 3
2 4
3 9];
[k,~,idx]= unique(A,'rows');
n = accumarray(idx(:),1);
output = [k n]
output =
1 5 2
2 3 1
2 4 1
3 9 1
一个输入是一个ID号多次出现的数据文件。 (e.g ID# 123) 现在我想要的是收集所有具有相同 ID 号的行,逐列比较,看看它们在哪一列有差异。
现在,我将转到下一个多次出现的 ID 号(例如 ID#456)并执行相同的操作。
我重复一切,直到我完成多次出现的最后一个 ID 号。
所以我的输出会是这样的, (1)列headers将是相同的。 (2) ID# 列将具有唯一的条目。只有多次出现的 ID 号才会包含在该列中。 (3)我将添加一个额外的列,其条目包含 ID 号出现的次数。例如,如果出现 5 次,则条目为 5。 (4)对于其他列,如果该列对于某个 ID 号的所有出现都有相同的条目,我们写“0”,否则写“1”。例如。如果对于 ID#123,列 "Section" 中的条目对于所有出现的 ID#123 都是相同的,那么对于我们的输出 table,列 "Section" 将包含值“ 0”。如果有任何差异,输出将是“1”
你的问题不是很清楚,但我想你想计算唯一值的数量和唯一行出现的次数。下面的 table 可能证明了这一点。
+-------+---------+-----+----------+---------------------+
| ID | Column1 | ... | Column n | num of occurrencies |
+-------+---------+-----+----------+---------------------+
这可以通过 unique and accumarray
来完成在下面的示例中,A
是原始数据,output
是您想要的输出。 output
的前 n
列是您的唯一数据,最后一列包含此行出现的次数。 [1 5]
行出现了两次,[2 3]
出现了一次等等
A = [1 5
1 5
2 3
2 4
3 9];
[k,~,idx]= unique(A,'rows');
n = accumarray(idx(:),1);
output = [k n]
output =
1 5 2
2 3 1
2 4 1
3 9 1