各被験者に対して複数の観測値を持つデータセットの場合、各被験者に対して 'pt' の最大値を持つ行を選択します。たとえば、次のデータセットの場合:
ID <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)
group <- data.frame(Subject=ID, pt=Value, Event=Event)
# Subject pt Event
# 1 1 2 1
# 2 1 3 1
# 3 1 5 2 # max 'pt' for Subject 1
# 4 2 2 1
# 5 2 5 2
# 6 2 8 1
# 7 2 17 2 # max 'pt' for Subject 2
# 8 3 3 2
# 9 3 5 2 # max 'pt' for Subject 3
被験者 1、2、3 の pt 値はそれぞれ 5、17、5 と最大です。
まず各被験者の最大 pt 値を見つけ、次にこの観察結果を別のデータ フレームに配置するにはどうすればよいでしょうか。結果のデータ フレームには、各被験者の最大 pt 値のみが含まれる必要があります。
ベストアンサー1
解決策は次のとおりですdata.table
:
require(data.table) ## 1.9.2
group <- as.data.table(group)
pt
各グループ内の最大値に対応するすべてのエントリを保持する場合:
group[group[, .I[pt == max(pt)], by=Subject]$V1]
# Subject pt Event
# 1: 1 5 2
# 2: 2 17 2
# 3: 3 5 2
最初の最大値だけを取得したい場合pt
:
group[group[, .I[which.max(pt)], by=Subject]$V1]
# Subject pt Event
# 1: 1 5 2
# 2: 2 17 2
# 3: 3 5 2
この場合、データ内のどのグループにも複数の最大値が存在しないため、違いはありません。