I have a big data set in excel. About 120,000 rows by 23 columns. I have used the read command to input this to Matlab and now want to go through each row in column 10 to search for user defined as unknown. Once it finds the unknown I want to delete the entire row. I'm new to Matlab and would appreciate the help. Here's what I've got:
>DataClean_ParkRun
>clc
>clear all
>[~,~,everything]=xlsread('File Wk1edited_Original.xlsx ');
>n=size(everything,1);
>b='unknown';
>for k=1:1:n;
> A{k}=everything{k,10};
> if A{k}==b;
> everything{k,:}=[];
> end
>end

Antworten (1)

dpb
dpb am 11 Jun. 2017
Bearbeitet: dpb am 12 Jun. 2017

0 Stimmen

[~,~,raw]=xlsread('File Wk1edited_Original.xlsx ');
ix=cellfun(@isempty,strfind(raw(:,10),'unknown'));
raw(~ix,:)=[]; % get rid of those that are _not_ empty (do contain 'unknown')

2 Kommentare

Ruairí Quinlan
Ruairí Quinlan am 12 Jun. 2017
Thanks for the help but back to the drawing board I'm afraid. That returned a new array of 1's and 0's. Thanks though
dpb
dpb am 12 Jun. 2017
Well, ix is a logical vector where the the string is/isn't.
Oooh....I see I didn't get the negation operation in on the deletion row, however; the rows you want to remove are those that do not contain the 'unknown' string; that's the ones we eliminated above.
Use
raw(~ix)=[]; % instead
I think I recall I started to write
raw=raw(ix,:);
and then switched to delete instead of copy and didn't swap the logical. I'll update the Answer to coincide.
If there's still an issue, attach a short section of the file we can see...

Melden Sie sich an, um zu kommentieren.

Kategorien

Gefragt:

am 11 Jun. 2017

Bearbeitet:

dpb
am 12 Jun. 2017

Community Treasure Hunt

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

Start Hunting!

Translated by