如何获取R中排名数据的值?

如何获取R中排名数据的值?,r,rank,R,Rank,我试图得到R中排名变量的值。我正在计算一些商品的年化标准差。然后,我对每种商品的不同年份的标准差进行排序。虽然我了解输出,但我正在寻找一种更好的方法,将年份值与排名输出相关联。我的代码如下: annualizedSD <- function(x) { annSD = sd(x) * sqrt(length(x)) } sdByContractByYear <- summaryBy(Settle~contract+yr,data=commodityData, FUN=annualize

我试图得到R中排名变量的值。我正在计算一些商品的年化标准差。然后,我对每种商品的不同年份的标准差进行排序。虽然我了解输出,但我正在寻找一种更好的方法,将年份值与排名输出相关联。我的代码如下:

annualizedSD <- function(x)
{
annSD = sd(x) * sqrt(length(x))
}
sdByContractByYear <- summaryBy(Settle~contract+yr,data=commodityData, FUN=annualizedSD)
rankSDByContractByYear <- summaryBy(-Settle.annualizedSD~contract, data=sdByContractByYear, FUN=rank)

annualizedSD我没有尝试summaryBy,在NAs的情况下也看到了一些不一致。使用本机R,您可以获得:

namrank=function(z,df,dec=FALSE){
  if(dec)dc=-1 else dc=1 # for ascending or not
  rk=df$Settle.annualizedSD
  names(rk)=df$yr
  data.frame(Cont=z,t(rank(rk*dc,na.last = "keep")))
}

#reproducible example
n=100
set.seed(1234)
commodityData=data.frame(Settle=rnorm(n,5,4),contract=sample(5,n,TRUE),yr=sample(2008:2012,n,TRUE))
sdByContractByYear <- summaryBy(Settle~contract+yr,data=commodityData, FUN=annualizedSD)
rankSDByContractByYear <- summaryBy(-Settle.annualizedSD~contract, data=sdByContractByYear, FUN=rank,na.last = "keep" )

#solution
cont=split(sdByContractByYear,sdByContractByYear$contract)
lisdfs=lapply(1:length(cont),function(z)namrank(z,cont[[z]],dec=TRUE))
rankcby<-Reduce(function(...) merge(..., all=T), lisdfs)
rankcby[,order(names(rankcby))]

  Cont X2008 X2009 X2010 X2011 X2012
1    1    NA     3     1    NA     2
2    2     3     1     2     4     5
3    3     5     4     1     3     2
4    4     4     2     1     3     5
5    5     3    NA     4     2     1
namrank=函数(z,df,dec=FALSE){
如果(dec)dc=-1,否则dc=1#表示升序与否
rk=df$结算。年化SD
姓名(rk)=df$yr
数据帧(Cont=z,t(秩(rk*dc,na.last=“keep”))
}
#可复制示例
n=100
种子集(1234)
commodityData=data.frame(结算=rnorm(n,5,4),合同=sample(5,n,TRUE),年=sample(2008:2012,n,TRUE))

sdByContractByYear首先你应该添加你正在使用的软件包,其次请给出一个可复制的例子:;在你做了这件事之后,我也许能帮你,包裹上写着“多比”截短产量:>rankSDByContractByYear合同-Settle.annualizedSD.FUN1-Settle.annualizedSD.FUN2咖啡11102玉米20103棉花9194原油1910 5加热油18 11 6 naturalGas 16 3…@fibrou:这不是一个可重复的示例。请阅读并提供一些可以复制粘贴到R中的内容。