1

この種のデータセットがあります (ID、V1、V2 はデータ フレームの 3 つの変数です):

ID V1 V2 
1  A  10
1  B  5
1  D  1
2  C  9
2  E  8

IDごとに、V2で値が最大の行を持つ新しいデータフレームが必要です。たとえば、結果は次のようになります。

ID V1 V2 
1  A  10
2  C  9
4

2 に答える 2

2

ddplyplyr パッケージから使用 (データがサンプルであると仮定)

    library(plyr)
    ddply(sample,.(ID),summarize,V1=V1[which.max(V2)],V2=max(V2))

  ID V1 V2
1  1  A 10
2  2  C  9
于 2013-07-09T12:18:57.170 に答える
1

これは一種の不器用なコードですが、機能します....

> mydf[with(mydf, ave(V2, ID, FUN = function(x) x == max(x))) == 1, ]
  ID V1 V2
1  1  A 10
4  2  C  9

不器用ではない:

do.call(rbind, 
        by(mydf, mydf$ID, 
           FUN = function(x) x[which.max(x$V2), ]))
#   ID V1 V2
# 1  1  A 10
# 2  2  C  9
于 2013-07-09T12:20:45.183 に答える