R 数据框 - 如何提取唯一值

标签 r unique match plyr

我正在尝试为 SUBJ 的每个组合提取第一条记录, BLKTR从一个数据集。简化的集合 sampleData 是:

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

我不知道如何从这个到我想要的,其中包括 BEGEND值或 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 条记录,我不能保证 BEGENDSUBJ 的不同组合具有唯一值, BLK , 和 TR .

另外,我想学习如何解决更一般的情况,对我来说,现在将获得每个 SUBJ 中的第一条记录。 , BLK , 和 TR组合。

当然,更一般的情况是获取每个 SUBJ 中的第 n 条记录。 , BLK , 和 TR组合。如果有人能告诉我如何做这些“更”一般或“最”一般解决方案中的一个或另一个,我将不胜感激。

最佳答案

无需使用summarise在这里,您可以执行此操作(使用 head 获取第一行)

 ddply(sampleData, .(SUBJ, BLK, TR), function(x) head(x,1))
  SUBJ BLK TR    BEG    END
1 1234   1  1 111021 111021
2 1234   2  2 132050 133113
3 5678   1  1  82503  82502
4 5678   2  2 274870 288224

或者更一般地获得第 n 行.n 你可以这样做:
ddply(sampleData, .(SUBJ, BLK, TR), function(x) x[min(row.n,nrow(x),])

关于R 数据框 - 如何提取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042646/

相关文章:

r - 如果缺少值,如何使 R 从另一列中获取值?

r - 粘贴函数参数的名称以在函数体中使用

excel - 在数组中搜索关键字,如果匹配,则从右列返回值

r - r 中不等长数据帧的匹配数据

r - 绘制ggmap时在ggplot2中添加geom_text时出现问题

r - 将*单元格格式*信息从excel文件导入R

sql - 是否可以对所有行的子集设置唯一约束?

c++ - glibc : Test if lib as DF_1_NODELETE flag or if lib has unique symbol

mysql - 如何在mysql数据库中创建随机唯一(不重复)和固定长度(9位)主键?

python - 从一个 DataFrame 中的另一个 DataFrame 中搜索值