我正在尝试从数据集中提取 和 的每个组合的第一条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
。
当然,更一般的情况是在每个、和combo中获取第 n 条记录。如果有人能告诉我如何做这些“更”通用或“最”通用解决方案中的一个或另一个,我将不胜感激。SUBJ
BLK
TR