我的问题是,我想确定具有相同的家庭,然后使用排名编号(按收入排名)来创建另一个排名变量。Sample.Data.Frame
例如,您有一个像图像中显示的data.frame。前两个观察没有收入。所以有2(= n)个观测值具有相同的收入和等级1(= y)和2(= x)。我想为两个观察创建新的等级变量:rank.new =(y + x)/ n。因此,有一个新的列" rank.new"在观察1和2中,值为1.5。
当然,我有更多的观察,更多相同的收入家庭,所以我想问你能否解决这个问题?
答案 0 :(得分:0)
我将您的测试数据放大一点,以显示当两个以上的点是同一组时会发生什么。您只需要对具有相同收入的点进行分组并获取组的平均值。我假设数据已按收入排序。
## 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
答案 1 :(得分:0)
您正在寻找功能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