delete specific rows in a table

2 vues (au cours des 30 derniers jours)
Carlos Alonso
Carlos Alonso le 17 Sep 2021
Commenté : Carlos Alonso le 20 Sep 2021
Hi guys, I need your help.
See attached table. I would like to delete the rows in which the first column (time) have a decimal number in it (keep only those rows where the time is an integer number)
After that I would like to delete the rows where the time is repeated and keep only the first one. For example, if there are 3 rows with time 5, we should only keep the top row.
Any help with that?
Many thanks

Réponse acceptée

the cyclist
the cyclist le 17 Sep 2021
I believe this does what you want. Note that this file doesn't have any repeated integer times. So, you don't need the second step.
% Read in the Excel file
A = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/741684/A.xlsx'); % You can just use 'A.xlsx' here
% Identify the rows that have exact integer time
keepIntegerTimeIndex = logical(abs(A{:,1}==round(A{:,1})));
% Keep only those rows
A = A(keepIntegerTimeIndex,:);
% Verify that there are only unique integer times:
length(A{:,1}) == length(unique(A{:,1}))
ans = logical
1
  1 commentaire
Carlos Alonso
Carlos Alonso le 20 Sep 2021
Many thanks, very helpful :)

Connectez-vous pour commenter.

Plus de réponses (1)

Image Analyst
Image Analyst le 17 Sep 2021
Try this:
allData = readmatrix('A.xlsx');
times = allData(:, 1);
% Find out where time is a pure integer
goodRows = times - round(times) == 0;
% Extract good rows
times = times(goodRows);
allData = allData(goodRows, :);
  1 commentaire
Image Analyst
Image Analyst le 17 Sep 2021
Basically same as the Cyclist. I was working on mine while he was uploading his.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by