PLT ships with a version of filter in the list.ss library. You can also use SRFI-1 for another version of the same function.
There are a few twists on this problem. SRFI-1's partition works like filter, except that it returns 2 lists, one with items that pass the filter, and the other with the rest of the items in the original list, e.g.
Also in SRFI-1, remove is the reverse of filter, returning a new list without the items satisfying the predicate supplied. In addition, there are ! versions of all these functions to modify a list in-place.
Also, SRFI-1's filter-map is another twist on filter, combining it with map. It's like a map that returns only the true values. Here we return the products of two lists, but only if both members of the lists are numbers: