2

私のデータフレームは次のようになります。

head(temp$HName)

[1] "UNIVERSITY OF TEXAS HEALTH SCIENCE CENTER AT TYLER"
[2] "METHODIST HOSPITAL,THE"                            
[3] "TOMBALL REGIONAL MEDICAL CENTER"                   
[4] "METHODIST SUGAR LAND HOSPITAL"                     
[5] "GULF COAST MEDICAL CENTER"                         
[6] "VHS HARLINGEN HOSPITAL COMPANY LLC"   

head(temp$Rate)

[1] 7.3 8.3 8.7 8.7 8.8 8.9
76 Levels: 7.3 8.3 8.7 8.8 8.9 9 9.1 9.2 9.3 9.4 9.5 9.6 ... 17.1

> head(temp$Rank)
[1] NA NA NA NA NA NA

temp$Rateソートされます。値がassignRank1、2、3、3、4、5 の新しい列を作成する関数を作成しようとしています。temp$Rank

私のコードは以下の通りです:

tapply(temp$Rank,temp$Rate, assignRank)

どこ :

    assignRank<- function(r=1){
      temp$Rank <- r
      r <- r + 1
      return(r)
    }

実行時に次のエラーが発生しますtapply

   tapply(temp$Rank,temp$Rate, assignRank)
 Show Traceback

 Rerun with Debug
 Error in `$<-.data.frame`(`*tmp*`, "Rank", value = c(NA, NA)) : 
  replacement has 2 rows, data has 301 

どこが間違っているのか教えてください。

4

2 に答える 2

0

その他のオプション (データが順序付けられている場合)

with(temp, cumsum(ave(Rate, Rate, FUN=function(x) c(1,x[-1]!=x[-length(x)]))))
#[1] 1 2 3 3 4 5



 with(temp, match(Rate, unique(Rate)) )
#[1] 1 2 3 3 4 5
于 2014-09-12T10:52:01.090 に答える