Filtering Columnar Data
Josh Mellicker
josh at dvcreators.net
Tue Jul 17 23:15:07 EDT 2007
Nice.
Once again, I suggest not hardwiring theColNum because it could
change... but you could always make a separate handler that figured
out the column number from a header row, lookup table or other
criteria, then call this handler.
On Jul 17, 2007, at 1:26 PM, Gregory Lypny wrote:
> Hello Josh,
>
> Here's the final version of the function. Thanks to everyone for
> their suggestions. I know there are other features and better
> error-checking that can be added. Maybe later. It can extract
> roughly 75 records from 700 in 1 tick on an Intel-based iMac.
>
> Regards,
>
> Gregory
>
> function filteredByColumn theData,theColNum,theSearchString,isWithout
> -- This function filters tab-delimited data by column
> -- By default the filter extracts lines containing the search
> string. Make isWithout = "without" to extract lines without it.
> -- Possible mods: options to make "begins with" or "contains"
> searches
> if theColNum is an integer
> then
> set the itemDelimiter to tab
> if isWithout is empty
> then
> sort lines of theData by (item theColNum of each is not
> theSearchString) -- Brings lines with theSearchString to the top
> repeat for each line thisLine in theData
> if item theColNum of thisLine is theSearchString
> then
> put thisLine & return after filteredData
> else
> exit repeat
> end if
> end repeat
> else
> sort lines of theData by (item theColNum of each is
> theSearchString) -- Brings lines without theSearchString to the top
> repeat for each line thisLine in theData
> if item theColNum of thisLine is not theSearchString
> then
> put thisLine & return after filteredData
> else
> exit repeat
> end if
> end repeat
> end if
> delete the last character of filteredData
> return filteredData
> else
> return "The column number must be an integer."
> end if
> end filteredByColumn
>
>
>
>
>
>
> On Mon, Jul 16, 2007, at 7:49 PM, Josh Mellicker responded:
>
>> On Jul 16, 2007, at 2:04 PM, Gregory Lypny wrote:
>>
>>> I tested the function below, which is much like Josh's, and it
>>> filters more than 300 lines in 1 tick; the same code as a message
>>> handler rather than a function takes 5 ticks; and the filter
>>> command on the same data takes 39 ticks.
>>
>>
>> Wow, I thought that handler was fast, but never tested/compared it.
>>
>> I wonder if sorting the lines by columnNum, then exiting on the first
>> non-matching line would be faster or slower?
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
More information about the use-livecode
mailing list