Определение наблюдений с одинаковыми значениями в одной переменной - PullRequest
0 голосов
/ 04 июня 2018

Моя проблема заключается в том, что я хочу определить домохозяйства, которые имеют одинаковые, а затем использовать номер ранга (ранжированный по доходу), чтобы создать другую переменную ранга. Sample.Data.Frame

Например, у вас есть data.frame, как показано на рисунке.Первые 2 наблюдения не имеют дохода.Таким образом, есть 2 (= n) наблюдения с одинаковым доходом и рангом 1 (= y) и 2 (= x).Новая переменная ранга, которую я хочу создать для обоих наблюдений: rank.new = (y + x) / n.Так что есть новый столбец с «rank.new», где в наблюдениях 1 и 2 значение равно 1,5.

Конечно, у меня есть еще много наблюдений о домохозяйствах с более идентичным доходом, поэтому я хочу спросить у вас, могу ли яисправить это в R?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы ищете функцию rank

Income = c(0,0,150,300,300,440,500,500,500)
rank(Income)
[1] 1.5 1.5 3.0 4.5 4.5 6.0 8.0 8.0 8.0
0 голосов
/ 04 июня 2018

Я делаю ваши тестовые данные немного больше, чтобы показать, что происходит, когда в одной группе более двух точек.Вам просто нужно сгруппировать баллы, которые имеют одинаковый доход и взять среднее по группам.Я предполагаю, что данные были отсортированы по доходам.

## 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...