TI-92 Plus and TI-Nspire CX II: List Filters
For this particular post, I also have a TI-Nspire CX II CAS document which can be downloaded here: https://drive.google.com/file/d/1Rm5vIWdUMg5OEyXi4VecNfuIGdiGRtan/view?usp=sharing
The functions are public and are available in the catalog. Examples and syntax are included.
The Filters
filters(list, criteria): filters out a list
sumfilt(list, criteria): sum of selected elements of a list
avgfilt(list, criteria): arithmetic average of elements of a list
prdlist(list, criteria): product of selected elements of a list
dimfilt(list, criteria): returns a count of list elements that fit a criteria
This is similar to Excel functions filter, sumifs, averagefits, and countifs; there is no productifs in Excel.
The criteria is a string, using x as a variable. Examples:
"x<10": select elements less than 10
"x≥20": select elements greater than or equal to 20
"10<x and x<20": select elements between 10 and 20, not including 10 or 20
"10≤x and x≤20": select elements between 10 and 20, including 10 or 20
TI-92 Plus Functions: Filters
Note: I am using the symbol [| for comment; in the program editor, select F2, option 9.
TI-92 Plus Function: filters
filters(list1,cr)
Func
[| list, criteria string with x
[| EWS 2021-08-13
[| filter function
Local list2,d,i,t,x
{}→list2
dim(list1)→d
For i,1,d
expr(cr)|x=list1[i]→t
If t Then
augment(list2,{list1[i]})→list2
EndIf
EndFor
Return list2
EndFunc
TI-92 Plus Function: sumfilt
sumfilt(list1,cr)
Func
[| list, criteria string with x
[| EWS 2021-08-14
[| sum-if filter function
Local list2,d,i,t,x
{}→list2
dim(list1)→d
For i,1,d
expr(cr)|x=list1[i]→t
If t Then
augment(list2,{list1[i]})→list2
EndIf
EndFor
Return sum(list2)
EndFunc
TI-92 Plus Function: avgfilt
avgfilt(list1,cr)
Func
[| list, criteria string with x
[| EWS 2021-08-14
[| average-if filter function
Local list2,d,i,t,x
{}→list2
dim(list1)→d
For i,1,d
expr(cr)|x=list1[i]→t
If t Then
augment(list2,{list1[i]})→list2
EndIf
EndFor
Return sum(list2)/(dim(list2))
EndFunc
TI-92 Plus Function: prdfilt
prdfilt(list1,cr)
Func
[| list, criteria string with x
[| EWS 2021-08-14
[| product-if filter function
Local list2,d,i,t,x
{}→list2
dim(list1)→d
For i,1,d
expr(cr)|x=list1[i]→t
If t Then
augment(list2,{list1[i]})→list2
EndIf
EndFor
Return product(list2)
EndFunc
TI-92 Plus Function: dimfilt
dimflt(list1,cr)
Func
[| list, criteria string with x
[| EWS 2021-08-13
[| count-if filter function
Local list2,d,i,t,x
{}→list2
dim(list1)→d
For i,1,d
expr(cr)|x=list1[i]→t
If t Then
augment(list2,{list1[i]})→list2
EndIf
EndFor
Return dim(list2)
EndFunc
Examples:
list0 = {2,4,5,6,9,10,11,13,14,15,18}
filters(list0,"x≤10"): {2,4,5,6,9}
filters(list0,"5≤x and x≤15"): {5,6,9,10,11,13,14,15}
sumfilt(list0,"x≤10"): 36
sumfilt(list0,"5≤x and x≤15"): 83
avgfilt(list0,"x≤10"): 6
avgfilt(list0,"5≤x and x≤15"): 83/8
prdfilt(list0,"x≤10"): 21600
prdfilt(list0,"5≤x and x≤15"): 2700
dimfilt(list0,"x≤10"): 6
dimfilt(list0,"5≤x and x≤15"): 8
All original content copyright, © 2011-2021. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.