R:本地排名列表,按行中的值汇总

时间:2012-11-02 14:13:42

标签: r subset ranking

我有以下表格的数据:

"almond" "blueberry" 3
"almond" "leek" 6
"almond" "citron" 7
"almond" "fish" 2
...
"leek" "swiss_cheese" 3
"leek" "pumpkin" 5
"leek" "onion" 4
"leek" "chocolate" 10
...

对于第一列中的每个值,我想根据第三列找到 k 最佳合作伙伴。 “最佳”表示:第三行中的数字越小。因此,对于杏仁,它的三个最佳伙伴是 fish,blueberry,leek 。对于 leek ,它的三个最佳合作伙伴是 swiss_cheese,洋葱和南瓜。我最后想要将完整表格减少到第一列中每个因素的三个最佳伙伴,即

"almond" "blueberry" 3
"almond" "leek" 6
"almond" "fish" 2
...
"leek" "swiss_cheese" 3
"leek" "pumpkin" 5
"leek" "onion" 4
...

1 个答案:

答案 0 :(得分:0)

所以,我发现这样做的一种方法是

require(plyr)
t <- ddply(table, .(V1), transform, rank = rank(V3))
z <- t[rank <= k,]

第一行加载包(如果尚未加载)。第二列将最后一列添加到 table ,称为 rank ,并根据第三列(“V3”)包含每行的等级,由第一列进行攻击( “V1”)。即,对于第一列中的每个不同值,存在包含它的所有行的本地排名。在第二步中,我可以仅对那些排名小于给定 k 的行进行子集化。