R 中的子集相同观察

Subsetting Identical Observations in R

我正在尝试使用 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"   

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

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

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

感谢您的帮助!

试试unique函数:

unique(data.set)

...

您可以使用 duplicatedfromLast 两个方向:

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

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