bio_img_videos

Stuart’s MATLAB Videos

Watch and Learn

Writing a Script to Count Data in Multiple Text Files

Here I need to combine the data from multiple text files by grouping and summing by one variable. I also try using a datastore which I have not used much before.

Features covered in this code-along style video include:

  • readtable, fileDatastore with read function parameter
  • varfun

Video Player is loading.
Current Time 0:00
Duration 0:00
Loaded: 0%
Stream Type LIVE
Remaining Time 0:00
 
1x
  • Chapters
  • descriptions off, selected
  • captions off, selected

      Play the video in full screen mode for a better viewing experience. 

      %% Read Redirect Traffic from Server Logs
      
      %% Parameters
      folderName='C:\Folder';
      outputFileName='Redirects4Weeks.csv';
      
      %% Get List of Files
      fileInfo=dir([folderName filesep '*.csv']);
      fileName={fileInfo.name}';
      fullFileNames=cellfun(@(x) [folderName filesep x],fileName,'UniformOutput', false);
      fileDatesCell=regexp(fileName,'(\d+-\d+-\d+)','tokens');
      fileDatesStr=stripCell(fileDatesCell,2);
      fileDates=datetime(fileDatesStr);
      [fileDates,idx]=sort(fileDates,'descend');
      mostRecent4=idx(1:4);
      
      %% Data Store
      fcn=@(x) readtable(x,'ReadVariableNames',false,'Delimiter',',','TextType','string', 'HeaderLines',1);
      ds = fileDatastore(fullFileNames(mostRecent4),'ReadFcn', fcn);
      cellData=readall(ds);
      data=vertcat(cellData{:});
      data.Properties.VariableNames={'Request_URI' 'count'};
      
      %% Count URLs
      pivot=varfun(@sum,data,'InputVariables','count','GroupingVariables',{'Request_URI'});
      pivot.GroupCount=[];
      pivot.Properties.VariableNames{'sum_count'}='count';
      pivot=sortrows(pivot,{'count'},{'descend'});
      
      %% Save
      writetable(pivot,outputFileName);
      
      |
      • print

      Comments

      To leave a comment, please click here to sign in to your MathWorks Account or create a new one.

      Loading...