identifying if a number stays the same between files

1 view (last 30 days)
C.G. on 18 Oct 2021
Commented: Johannes Hougaard on 19 Oct 2021
I have 3 .csv files. I want to know if the numbers in column 5 of the first file stay the same or change between the next 2 files.
Can anybody help me write a simple code to do this?
2 CommentsShowHide 1 older comment
C.G. on 18 Oct 2021
Edited: C.G. on 18 Oct 2021
I've written a method out and tried to do it but with no success. I cant work out how to compare the values between the files, hence my question.
%% Method to implement:
%identify if the numbers in columns 5 and 6 have changed between files 1 and 2
%if the number is the same, record the particle ID from column 1
% if the number appears in consecutive columns, record how many times the
% number is consectively seen
file = dir('*.csv'); %read the files into matlab
num_files = length(file); %record how many files have been found
[~, index] = natsort({file.name}); %sort the files into proper numerical order (e.g. 1,2,3)
filelist = file(index);
rows = zeros(1, num_files); % create a empty matrix
for a = 1:num_files
T = table2array(readtable(filelist(a).name)); %read in the values
if T(:,5)== T(:,5) & T(:,6) == T(:,6); %see if numbers in col 5& 6 are the same
S = T(ismember(T(:,1),dataset(R,1)),:); % if number is the same, record number in col 1
end

Sign in to comment.

Answers (1)

Johannes Hougaard on 18 Oct 2021
I'm not sure if I understand your question correctly - at least if I do then the data you've included are all not identical.
But if the question is "are all data in column 5 the same in ATF_1.csv and ATF_2.csv" then the answer is here.
atf_files = dir("ATF_*.csv");
isthesame = false(size(atf_files));
for ii = 2:length(atf_files)
atf_1 = readmatrix(atf_files(ii-1).name);
atf_2 = readmatrix(atf_files(ii).name);
if all(size(atf_1(:,5)) == size(atf_2(:,5)))
isthesame(ii) = all(atf_1(:,5) == atf_2(:,5));
end
end
2 CommentsShowHide 1 older comment
Johannes Hougaard on 19 Oct 2021
Which individual values do you want to check when the number of rows change?
Do you want to compare row 1 of file ATF_2 to row 1 of file ATF_1? If so you can do
atf_files = dir("ATF_*.csv");
identicalrows = cell(length(atf_files)-1,1);
for ii = 2:length(atf_files)
atf_1 = readmatrix(atf_files(ii-1).name);
atf_2 = readmatrix(atf_files(ii).name);
N = min(size(atf_1,1),size(atf_2,1));
identicalrows{ii-1} = false(N,1);
for jj = 1:N
identicalrows{ii-1}(jj) = atf_2(jj,5) == atf_1(jj,5);
end
end
...and then you do nothing for your last rows;
- or do you want to compare row 1 of file ATF_2 to all rows of ATF_1 and find which one is identical?
atf_files = dir("ATF_*.csv");
identicalrows = cell(length(atf_files)-1,1);
rowindex = cell(length(atf_files)-1,1);
for ii = 2:length(atf_files)
atf_1 = readmatrix(atf_files(ii-1).name);
atf_2 = readmatrix(atf_files(ii).name);
identicalrows{ii-1} = false(size(atf_2,1),1);
rowindex{ii-1} = nan(size(atf_2,1),1);
for jj = 1:size(atf_2,1)
identicalrows{ii-1}(jj) = any(atf_2(jj,5) == atf_1(:,5));
if any(atf_2(jj,5) == atf_1(:,5))
rowindex{ii-1}(jj) = find(atf_2(jj,5) == atf_1(:,5),1);
end
end
end

Sign in to comment.

Categories

Find more on Matrix Indexing in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!