Using a Do loop should be avoided in the answer of Paul, and Nearest is not used in a smart way. The answer of Joel has a similar problem as multiple datapoints could be selected; it depends on the factor 0.1 and 0.9 (ok for this test-data, but not a general solution). A faster/better way is as follows:
SetDirectory[NotebookDirectory[]];
data = Import["frequency-and-phase-data.csv"];
d = 500 (*the displacement *)
find = Range[Floor[Min[data[[All, 1]]], \[Delta]], Ceiling[Max[data[[All, 1]]], \[Delta]], \[Delta]] (*the points you look for*)
nf = Nearest[#[[1]] -> # & /@ data] (* make optimised nearest function*)
selected = First@*nf /@ find (* find for each point *)
{{50., 0.217746}, {501.75, 0.261843}, {1001.28, 0.509}, {1500.81,
0.595829}, {2000.34, 0.847844}, {2499.88, 0.932532}, {2999.41,
1.44334}, {3498.94, 1.67507}, {3998.47, 1.95012}, {4498.,
2.02858}, {5001.88, 2.22979}, {5501.41, 2.45856}, {6000.94,
2.42086}, {6500.47, 2.26449}, {7000., 2.18439}}
You might have to interchange Floor and Ceiling, depending on how you want to handle the 'ends'.