Clear Filters
Clear Filters

Handling header name variation

2 views (last 30 days)
Stephen Devlin
Stephen Devlin on 7 Jun 2018
Edited: Stephen23 on 7 Jun 2018
Hi,
When I import a textfile using readable I have various column headers, one called "myheader1", but it could also be "my header_1",how can you access that column once it is in the workspace no matter whether there is an underscore etc in that particular variable name?
Best regards Steve
  2 Comments
Geoff Hayes
Geoff Hayes on 7 Jun 2018
Stephen - is this column always in the same position? Are you saying that a single file may have columns names as "myheader1" or "my header_1"? Please attach a small example...
Stephen23
Stephen23 on 7 Jun 2018
Stephen Devlin's "Answer" moved here:
Hi Geoff, Yes it is always in the same position, the first cell of an excel spreadsheet (A1), it would be great though if the code was able to handle other headers that may have a similar issue but would also be in the same position.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 7 Jun 2018
Edited: Stephen23 on 7 Jun 2018
One: Position: Can you rely on the column position as being fixed? If the position is always the same then you could simply replace the variable names by their position. Easy.
Two: Remove Chars: depending on how much variance you accept in the names, or what patterns the differences might fit: e.g. if you know that only spaces and underlines are involved, then you could simply use strrep or regexprep to get rid of the superfluous characters, and then update the variable name:
Three: Match Similar Names: If the possible names do not fit a particular pattern (i.e. not just extra space/underscore, but there could be missing/different characters), then one straightforward solution would be to compare the variable names against your preferred names (e.g. calculate the Levenshtein edit distance using my implementation of the Wagner Fischer algorithm (which is the most efficient algorithm), and then replace the "closest" matches with your preferred variable names. Thus in your code you would always use the "correct" variable name. All you would have to do is decide the limit that you will tolerate for differences, e.g. for your example the difference is:
>> wfEdits('myheader1','my header_1')
ans = 2

More Answers (0)

Community Treasure Hunt

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

Start Hunting!