Azzera filtri
Azzera filtri

identify specific unique columns in a cell array

1 visualizzazione (ultimi 30 giorni)
Hello, I have the following cell array as an example:
Stations=
'CID' 'C17E' 'C17E' 200 "2016/9/12" "14:46:6" 0
'CID' 'BC54' 'BC54' 200 "2016/9/13" "6:26:2" 0
'SGC' 'BAR2' 'BAR2' 200 "2016/9/13" "8:12:15" 0
'SGC' 'CBARI' 'BAR2' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBET2' 'BET' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBUIS' 'CBUIS' 200 "2016/9/14" "1:58:31" 0
'SGC' 'CBET2' 'BET' 200 "2018/7/22" "7:50:30" 1
'CID' 'C17E' 'C17E' 200 "2014/2/2" "14:46:6" 0
'SGC' 'CBUIS' 'CBUIS' 200 "2017/7/1" "1:50:31" 0
I would like to identify unique values considering the first, second, third and fourth column and obtain the following matrix
Reduced_stations=
'CID' 'C17E' 'C17E' 200 "2016/9/12" "14:46:6" 0
'CID' 'BC54' 'BC54' 200 "2016/9/13" "6:26:2" 0
'SGC' 'BAR2' 'BAR2' 200 "2016/9/13" "8:12:15" 0
'SGC' 'CBARI' 'BAR2' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBET2' 'BET' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBUIS' 'CBUIS' 200 "2016/9/14" "1:58:31" 0
I would appreciate the help. By the way, the cell array (Stations) does not have the same data type.

Risposta accettata

Dyuman Joshi
Dyuman Joshi il 8 Set 2023
Modificato: Dyuman Joshi il 8 Set 2023
Here's one approach -
%Input
Stations = {'CID' 'C17E' 'C17E' 200 "2016/9/12" "14:46:6" 0
'CID' 'BC54' 'BC54' 200 "2016/9/13" "6:26:2" 0
'SGC' 'BAR2' 'BAR2' 200 "2016/9/13" "8:12:15" 0
'SGC' 'CBARI' 'BAR2' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBET2' 'BET' 200 "2016/9/14" "1:58:31" 1
'SGC' 'CBUIS' 'CBUIS' 200 "2016/9/14" "1:58:31" 0
'SGC' 'CBET2' 'BET' 200 "2018/7/22" "7:50:30" 1
'CID' 'C17E' 'C17E' 200 "2014/2/2" "14:46:6" 0
'SGC' 'CBUIS' 'CBUIS' 200 "2017/7/1" "1:50:31" 0};
%Convert to table, as the function unique() can be used for a table
t = cell2table(Stations);
%Columns of interest
col = 1:4;
%Get the indices of the unique combinations of the columns of interest
%in the same order as they occur in the input
[~,idx]=unique(t(:,col),'stable');
%Get the output in terms of table
outtable = t(idx,:)
t = 6×7 table
Stations1 Stations2 Stations3 Stations4 Stations5 Stations6 Stations7 _________ _________ _________ _________ ___________ _________ _________ {'CID'} {'C17E' } {'C17E' } 200 "2016/9/12" "14:46:6" 0 {'CID'} {'BC54' } {'BC54' } 200 "2016/9/13" "6:26:2" 0 {'SGC'} {'BAR2' } {'BAR2' } 200 "2016/9/13" "8:12:15" 0 {'SGC'} {'CBARI'} {'BAR2' } 200 "2016/9/14" "1:58:31" 1 {'SGC'} {'CBET2'} {'BET' } 200 "2016/9/14" "1:58:31" 1 {'SGC'} {'CBUIS'} {'CBUIS'} 200 "2016/9/14" "1:58:31" 0
%or
%Get the output in terms of cell array
outcell = Stations(idx,:)
Stations = 6×7 cell array
{'CID'} {'C17E' } {'C17E' } {[200]} {["2016/9/12"]} {["14:46:6"]} {[0]} {'CID'} {'BC54' } {'BC54' } {[200]} {["2016/9/13"]} {["6:26:2" ]} {[0]} {'SGC'} {'BAR2' } {'BAR2' } {[200]} {["2016/9/13"]} {["8:12:15"]} {[0]} {'SGC'} {'CBARI'} {'BAR2' } {[200]} {["2016/9/14"]} {["1:58:31"]} {[1]} {'SGC'} {'CBET2'} {'BET' } {[200]} {["2016/9/14"]} {["1:58:31"]} {[1]} {'SGC'} {'CBUIS'} {'CBUIS'} {[200]} {["2016/9/14"]} {["1:58:31"]} {[0]}

Più risposte (0)

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by