3
ID Julian Month Year Location Distance
 2  40749  July 2011     8300    39625
 2  41425   May 2013 Hatchery    31325
 3  40749  July 2011     6950    38625
 3  41057   May 2012 Hatchery    31325
 6  40735  July 2011     8300    39650
12  40743  July 2011    11025    42350

以上是head()我正在使用的数据框。它包含超过 7,000 行和 3,000 个唯一 ID 值。我想删除所有只有一个 ID 值的行。这可能吗?也许解决方案是只保留重复 ID 的行?

4

2 回答 2

5

如果d是您的数据框,我将使用它duplicated来查找具有重复 ID 的行。使用 in 中的两个参数fromLast可以获得第一个和最后一个重复的 ID 行。

d[(duplicated(d$ID, fromLast = FALSE) | duplicated(d$ID, fromLast = TRUE)),]

这种双重duplicated方法有多种用途:

查找所有重复行,包括“具有较小下标的元素”

如何获取数据帧的子集,该子集仅包含在 R 中多次出现在集合中的元素

如何识别 R 中的“相似”行?

于 2013-10-23T04:28:02.563 回答
1

这是我的做法:

new.dataframe <- c()
ids <- unique(dataframe$ID)
for(id in ids){
temp <- dataframe[dataframe$ID == id, ]
if(nrow(temp) > 1){
new.dataframe <- rbind(new.dataframe, temp)
}}

这将删除所有只有一行的 ID

于 2013-10-23T04:27:42.043 回答