Delete rows when a value repeated less than 5 times

14 ビュー (過去 30 日間)
Dinh-Vinh Vo
Dinh-Vinh Vo 2017 年 8 月 31 日
編集済み: Karena Weduwen 2018 年 3 月 19 日
I have a matrix:
a b c
1 201 1
2 202 1
3 203 1
4 204 1
5 205 1
6 206 1
7 207 2
8 208 2
9 209 2
10 210 2
11 222 3
12 232 3
I would like to remove rows 7-12 which have a value in the last column (c) repeated less than 5 times. Any help is appreciated.

採用された回答

Sean de Wolski
Sean de Wolski 2017 年 8 月 31 日
編集済み: Sean de Wolski 2017 年 8 月 31 日
m = [1 201 1
2 202 1
3 203 1
4 204 1
5 205 1
6 206 1
7 207 2
8 208 2
9 209 2
10 210 2
11 222 3
12 232 3];
% Unique elements and locations in third column
[uv, ~, id] = unique(m(:,3));
% How many of each?
n = histcounts(id);
% Keep ones with more than 5.
m2 = m(ismember(m(:,3), uv(n>=5)),:)
  2 件のコメント
Dinh-Vinh Vo
Dinh-Vinh Vo 2017 年 8 月 31 日
Thank you very much for your help, Sean. It is definitely what I'm looking for.
Karena Weduwen
Karena Weduwen 2018 年 3 月 19 日
編集済み: Karena Weduwen 2018 年 3 月 19 日
Hello Sean, your code works perfectly fine on a small testfile I use (190 rows).
But as soon as I add some more rows, the
n = histcounts(id);
part starts giving weird values. I cannot find the reason for that change.
Attached you find the two files:
working.txt code runs through without any trouble
not working.txt "n = histcounts(id);" gives strange output and the m2 stays empty.
Any suggestions on how the code could be adjusted to work on a bigger file?
since my file looks a little different (I am searching in the first column) here is the code I use:
if true
load working.txt
a = working(:,:);
[uv, ~, id] = unique(a(:,1));
n = histcounts(id);
m2 = a(ismember(a (:,1), uv(n==4)),:);
end

サインインしてコメントする。

その他の回答 (1 件)

José-Luis
José-Luis 2017 年 8 月 31 日
編集済み: José-Luis 2017 年 8 月 31 日
idx = unique(m(:,3));
count = accumarray(c.',(1:numel(c)).',[],@numel);
to_keep = ~ismember(m(:,3),idx(count < 5));
result = m(to_keep,:)
  5 件のコメント
José-Luis
José-Luis 2017 年 8 月 31 日
No, the solution is not robust. You'd need to adjust the accumarray function.
Dinh-Vinh Vo
Dinh-Vinh Vo 2017 年 8 月 31 日
Thanks, I did it.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by