Let's generate two dummy samples of data of size 100 that match the form you have given:
sample1 = {
RandomInteger[ {20, 60}, 100], (* age *)
RandomReal[ {1000, 5000}, 100] (* income *)
} // Transpose; (* make tuples *)
sample2 = {
RandomInteger[ {30, 50}, 100], (* age *)
RandomReal[ {3000, 7000}, 100] (* income *)
} // Transpose; (* make tuples *)
Now we extract the ages from group1 and generate a smooth Kernel distribution for it:
ageDistribution1 = KernelMixtureDistribution @ sample1[[All, 1]]
This can be used to caculate sampling weights. The weights simple are the probability density for any age of the second group using the Smooth Kernel Distribution according to the first groups data:
weights = 10.^3 PDF[ ageDistribution1, #] & /@ sample2[[All, 1]];
(* the weights are scaled which helps numerics I believe *)
Now one can simply sample from the 2nd group using the age distribution of the first group:
sample = With[
{ sampleSize = 10 }, (* or another value less than group size *)
RandomSample[ weights -> sample2, sampleSize ]
];