Effacer les filtres
Effacer les filtres

Need help filtering csv by values inside column

4 vues (au cours des 30 derniers jours)
Conor Nelson
Conor Nelson le 8 Juil 2019
Commenté : Star Strider le 12 Juil 2019
I have a large csv file(1034361x28). I want to look at column #1, and find rows containing the same column1 value and find the minimum value of column 2 for the new data set.
simple Ex.
if i have:
2 23
2 39
2 40
5 12
5 9
9 29
9 85
I need the code to find the minimum values for each subset of column 2(min of (23,39,40) and (12,9) and (29,85)).
How would i do so for a 1034361x28 file?
Thank You

Réponse acceptée

Star Strider
Star Strider le 8 Juil 2019
Try this:
A = [2 23
2 39
2 40
5 12
5 9
9 29
9 85];
[UA1,~,Ix] = unique(A(:,1));
Col2Max = accumarray(Ix, A(:,2), [], @min);
Out = [UA1, Col2Max];
producing:
Out =
2 23
5 9
9 29
  6 commentaires
Conor Nelson
Conor Nelson le 12 Juil 2019
Sorry i think i worded my question wrong, I am looking to output the entire row containing the values. Ex:
ans =
2 23
2 39
2 40
Star Strider
Star Strider le 12 Juil 2019
Try this:
SameCol1 = accumarray(Ix, (1:size(A,1)), [], @(x){A(x,:)});
SameCol1{1}
producing:
ans =
2 23
2 39
2 40
And so for the others.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by