我是新來的R,我覺得它很有趣。根據訂單排序矢量和平均在R
我有MATLAB代碼來排序基於秩序的工作正常。現在我想將其轉換爲R代碼裏面,一個典型的斯皮爾曼與領帶排名:
# MATLAB CODE
function r=drank(x)
u = unique(x);
[xs,z1] = sort(x);
[z1,z2] = sort(z1);
r = (1:length(x))';
r=r(z2);
for i=1:length(u)
s=find(u(i)==x);
r(s,1) = mean(r(s));
end
這是我的嘗試:
# R CODE
x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1)
drank <- function(x){
u = unique(x)
xs = order(x)
r=r[xs]
for(i in 1:length(u)){
s=which(u[i]==x)
r[i] = mean(r[s])
}
return(r)
}
[R < - 喝(x)的
結果:
r = 5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4
1.5
是8.2
平均發生兩次即領帶
6.5
是平均11.3
發生兩次
誰能幫我查一下嗎?
感謝,
請張貼樣本數據和預期的結果。另外,用文字描述這個功能應該做什麼。 – Andrie 2014-11-22 15:39:30
@Andrie我發佈了一個示例謝謝。 – aliocee 2014-11-22 16:08:19
您應該在發佈之前完成SO的搜索;這個搜索策略提供了4個點擊與第一個Q回答你的Q:'秩序連接平均[r]' – 2014-11-22 20:16:01