Я делаю ваши тестовые данные немного больше, чтобы показать, что происходит, когда в одной группе более двух точек.Вам просто нужно сгруппировать баллы, которые имеют одинаковый доход и взять среднее по группам.Я предполагаю, что данные были отсортированы по доходам.
## Test Data
Income = c(0,0,150,300,300,440,500,500,500)
Rank = 1:length(Income)
Group = cumsum(c(1, diff(Income) != 0))
NewRank = aggregate(Rank, list(Group), mean)[Group,2]
NewRank
[1] 1.5 1.5 3.0 4.5 4.5 6.0 8.0 8.0 8.0