R中的相同观察值的子集

时间:2015-01-28 20:03:18

标签: r vector logic subset

我正在尝试使用R来研究蛋白质序列同源性,并且我希望通过数据框寻找相同的位置和字母对。数据看起来类似于下面的框架:

Letter <- c("A", "B", "C", "D", "D", "E", "G", "L")
Position <- c(1, 2, 3, 4, 4, 5, 6, 7)
data.set <- cbind(Position, Letter)

哪个收益率:

     Position Letter
[1,] "1"      "A"   
[2,] "2"      "B"   
[3,] "3"      "C"   
[4,] "4"      "D"   
[5,] "4"      "D"   
[6,] "5"      "E"   
[7,] "6"      "G"   
[8,] "7"      "L"   

我想循环查找所有相同的观察结果(在这种情况下,观察4和5),但我很难找到最好的方法。

我希望结果数据框看起来像:

     Position Letter
[1,] "4"      "D"   
[2,] "4"      "D"   

我试图这样做的方式最终产生了这个代码,但不幸的是它返回一个TRUE值,因为我意识到我正在比较两个相同的数据帧:

> identical(data.set[1:nrow(data.set),1:2], data.set[1:nrow(data.set),1:2])
[1] TRUE

我不确定使用same()函数循环是否是最好的方法?我确信这是一个我缺少的更优雅的解决方案。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试unique功能:

unique(data.set)

...

答案 1 :(得分:0)

您可以使用duplicated fromLast向两个方向前进:

data.set[(duplicated(data.set)==T | duplicated(data.set, fromLast = TRUE) == T),]

#     Position Letter
#[1,] "4"      "D"   
#[2,] "4"      "D"