s*****n 发帖数: 839 | 1 我有一组数像这样
x: 1 1 1 2 2 2 3 3 3 3
y: 3 2 1 2 3 1 4 3 2 1
我想在每一个x value以内rank y
My code:
for (i in seq (along=x) ){
rank<-rank(y,ties.method="min")
}
It's not working well. Give me strange numbers.
How to fix it?
Thank You!! | c*****m 发帖数: 4817 | 2 你想得到什么呢? 一个vector? 用你的例子,x value以内rank y的结果就是y吧
unlist(tapply(y, x, rank))
【在 s*****n 的大作中提到】 : 我有一组数像这样 : x: 1 1 1 2 2 2 3 3 3 3 : y: 3 2 1 2 3 1 4 3 2 1 : 我想在每一个x value以内rank y : My code: : for (i in seq (along=x) ){ : rank<-rank(y,ties.method="min") : } : It's not working well. Give me strange numbers. : How to fix it?
| G********0 发帖数: 129 | 3 这是应该返回一个length(x) by length (y)矩阵么? | s*****n 发帖数: 839 | 4 非常感谢你的回复.不过我不是想得到y,我想得到rank.
比如
x:1 1 1 2 2 2 4 4 4 3 3 3
y:2 1 3 3 2 1 1 2 3 4 6 7
那么,我sort by x,y以后就能得到:
x:1 1 1 2 2 2 3 3 3 4 4 4
y:1 2 3 1 2 3 4 6 7 1 2 3
这个时候我想生成z,
z:1 2 3 1 2 3 1 2 3 1 2 3
这个z应该在原来的数据里增加一列,标示着每个y在其对应x中的rank.
您看这个该怎么办?
谢谢!!
【在 c*****m 的大作中提到】 : 你想得到什么呢? 一个vector? 用你的例子,x value以内rank y的结果就是y吧 : unlist(tapply(y, x, rank))
| s*****n 发帖数: 839 | 5 不是矩阵,是要y的rank出现在原来的数据里。
【在 G********0 的大作中提到】 : 这是应该返回一个length(x) by length (y)矩阵么?
| a****0 发帖数: 51 | 6 Your original data(y) may cuase confusion, see following
require("plyr")
x=c(1,1,1,2,2,2,3,3,3,3)
y=c(4,6,1,3,9,1,3,10,2,1)
df=as.data.frame(t(rbind(x,y)))
ddply(df,"x",transform,rk=rank(y)) | D******n 发帖数: 2836 | 7 Its not called rank y within x which confused ppl. It is actually a
common practice called "ranking by multiple columns"
x=c(1,1,1,2,2,2,3,3,3,3)
y=c(4,6,1,3,9,1,3,10,2,1)
new_y <- y[order(x,y)]
【在 s*****n 的大作中提到】 : 我有一组数像这样 : x: 1 1 1 2 2 2 3 3 3 3 : y: 3 2 1 2 3 1 4 3 2 1 : 我想在每一个x value以内rank y : My code: : for (i in seq (along=x) ){ : rank<-rank(y,ties.method="min") : } : It's not working well. Give me strange numbers. : How to fix it?
| s*****n 发帖数: 839 | 8 谢谢您的回复。
我的x 和y 都在一个数据里,生成的rank z我也想放在这个数据里,怎么做啊?
【在 D******n 的大作中提到】 : Its not called rank y within x which confused ppl. It is actually a : common practice called "ranking by multiple columns" : x=c(1,1,1,2,2,2,3,3,3,3) : y=c(4,6,1,3,9,1,3,10,2,1) : new_y <- y[order(x,y)]
|
|