from
strfind for datasets
by Arnaud Amzallag
Search and find entries in a Matlab dataset (in a specified string variable)
|
| ind=datasetStrFind(dset,str,vars) |
function ind=datasetStrFind(dset,str,vars)
%
%
% function ind=datasetStrFind(dset,str,vars)
%
% like strfind.m but applies on datasets instead of cell arrays.
%
% The "dataset" type is a matlab type which allows to store data in a similar
% way than database tables. Database operations such as join can by applied
% (see the function join). However I did not find a function to do a simple
% field search on a dataset.
%
% This function allows to look for a substring (str) within observations of
% a variable (vars) of a dataset dset. vars can be the variable name or the
% column number to search in the dataset.
%
% % % %
%
% example:
% names = {'John'; 'Henri';'Enrico'};
% ages = [26; 18; 35];
% d1 = dataset({names, 'Name'}, {ages, 'Age'})
%
% datasetStrFind(d1,'ri',1)
%
% will return
%
% d1 =
%
% Name Age
% 'John' 26
% 'Henri' 18
% 'Enrico' 35
%
%
% ans =
%
% 2
% 3
if length(vars(:))~=1 && ~ischar(vars)
length(vars(:))
error('vars must be a scalar (variable index) or a string (variable name)')
end
if ~ischar(dset{1,vars})
error(['the variable ',num2str(vars),' does not seem to contain strings'])
end
strfindann=@(x) strfind(x,str);
temp=datasetfun(strfindann,dset,'DataVars',vars,'UniformOutput',false);
ind=find(~cellfun('isempty',temp{1}));
|
|
Contact us at files@mathworks.com