との組み合わせごとに、データセットから最初のレコードを抽出しようとしていSUBJ
ます。簡略化されたセットsampleDataは次のとおりです。BLK
TR
SUBJ BLK TR BEG END
1 1234 1 1 111021 111021
2 1234 1 1 111400 111021
3 1234 1 1 111566 111021
4 1234 1 1 111765 111021
5 1234 2 2 132050 133113
6 1234 2 2 133123 133113
7 1234 2 2 133479 133113
8 1234 2 2 133762 133113
9 5678 1 1 82503 82502
10 5678 1 1 82902 82502
11 5678 1 1 83102 82502
12 5678 1 1 83310 82502
13 5678 2 2 274870 288224
14 5678 2 2 288225 288224
15 5678 2 2 288535 288224
16 5678 2 2 288802 288224
私がこれを試すとき:
ddplyFirst <- ddply(sampleData, .(SUBJ, BLK, TR), summarize,
Tr.match = match(unique(TR), TR))
私はこれを手に入れます:
ddplyFirst
SUBJ BLK TR Tr.match
1 1234 1 1 1
2 1234 2 2 1
3 5678 1 1 1
4 5678 2 2 1
これから取得したいものに移動する方法がわかりません。これには、BEG
andEND
値または。が含まれますBEG - END
。
さて、上記の例でEND
は、は一意の番号であることがわかったので、これを行うことができます。
first <- with(sampleData, match(unique(END), END))
それは私に与えます:
sampleData[first,]
SUBJ BLK TR BEG END
1 1234 1 1 111021 111021
5 1234 2 2 132050 133113
9 5678 1 1 82503 82502
13 5678 2 2 274870 288224
問題は、完全なデータセットが202,616レコードの長さであり、、、、およびのさまざまな組み合わせに対して一意の値を保証できないことBEG
です。END
SUBJ
BLK
TR
また、より一般的なケースを解決する方法を学びたいと思います。これは、今のところ、、、、および組み合わせのそれぞれSUBJ
で最初のレコードを取得することです。BLK
TR
もちろん、さらに一般的なケースは、、、、およびコンボのそれぞれでn番目のレコードを取得することです。誰かがこれらの「より」一般的または「最も」一般的な解決策のいずれかを行う方法を私に示すことができれば、私は非常に感謝するでしょう。SUBJ
BLK
TR