この種のデータセットがあります (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
この種のデータセットがあります (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
ddply
plyr パッケージから使用 (データがサンプルであると仮定)
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
これは一種の不器用なコードですが、機能します....
> 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