The identify() function does not return the number of points near the pointer; it returns the index within the plotting vectors of the selected point. I do not know how it chooses a point if there is exact over plotting, as in your case.
call identify() and click on the point at (5,4), identify() will return 3 because the chosen point is the third element in each of the vectors DF$Cert and DF$Gender.