3

コミュニティ メンバーの皆様、こんにちは。関連するすべての質問を確認しましたが、解決策が見つかりませんでした。私は次のDBを持っています

DB<-data.frame(ID=rep((1:10),10),DISTANCE=1:100,TIME=rep(1:20))

関連する時間を持つ各 ID の列 DISTANCE の最大値を取得したい、つまり:

result<-data.frame(ID=1:10,DISTANCE=91:100,TIME=11:20)

私はすでにそれを知っています

aggregate(DB$DISTANCE,by=list(DB$ID),max)

作業の一部を行うことができるので、各 ID の DISTANCE の最大値に従って列 TIME の関連値を取得するにはどうすればよいですか?

助けてくれてありがとう!

4

2 に答える 2

3

私はこれを使用して行いますplyr

library(plyr)
ddply(DB, .(ID), summarise, mx = max(DISTANCE), TIME = TIME[which.max(DISTANCE)])

ddplydata.frameのレベルに従って をカットしますID。次に、サブセットごとに を計算し、 を使用しmax(DISTANCE)て関連する を見つけます。TIMEwhich.max

于 2013-03-29T10:30:19.910 に答える
3

列を元に戻すmergeには、次を使用する必要があります。TIME

DB.a <- aggregate(data = DB, DISTANCE ~ ID, max)
merge(DB.a, DB)
#    ID DISTANCE TIME
# 1   1       91   11
# 2  10      100   20
# 3   2       92   12
# 4   3       93   13
# 5   4       94   14
# 6   5       95   15
# 7   6       96   16
# 8   7       97   17
# 9   8       98   18
# 10  9       99   19
于 2013-03-29T10:28:08.863 に答える