【发布时间】:2019-03-01 14:57:20
【问题描述】:
我有一个如下所示的数据框:
id dob lname
1 1900-01-01 a
2 1900-01-01 b
3 1900-01-01 b
4 1901-01-01 c
5 1901-01-01 d
6 1902-01-01 e
7 1902-01-01 e
8 1902-01-01 f
9 1903-01-01 g
10 1903-01-01 h
我想过滤以显示 dob 重复且 lname 重复的所有行,因此所需的输出如下所示:
id dob lname
2 1900-01-01 b
3 1900-01-01 b
6 1902-01-01 e
7 1902-01-01 e
我尝试按 dob 和 lname 进行分组,但我被困在下一步,这将返回这些列具有重复值的所有行。
示例代码如下:
id <- c(1:10)
dob <- date(c("1900-01-01", "1900-01-01", "1900-01-01", "1901-01-01", "1901-01-01", "1902-01-01", "1902-01-01", "1902-01-01", "1903-01-01", "1903-01-01"))
lname <- c("a", "b", "b", "c", "d", "e", "e", "f", "g", "h")
df <- data.frame("id" = id, "dob" = dob, "lname" = lname)
【问题讨论】:
-
从技术上讲,您的问题与此相反,但您可以使用 hadley 的答案并过滤
row_number(z) > 1 -
相关:Subset data frame based on number of rows per group。将每组的行数调整为您想要的条件。
-
@divibisan 你知道如何使用
distinct(),因为哈德利指出它是为此目的而创建的吗?distinct()的反义词怎么称呼? -
@divibisan using
row_number() > 1并不能完全给我我想要的输出,因为它仍然消除了每组重复项中的一个行。使用我上面的例子,它只给了我 ID 为3和7的行。我不认为这是一个重复的问题。 -
你想要
n()而不是row_number()-df %>% group_by(dob,lname) %>% filter(n() > 1)- 这使得这与@Henrik 的建议重复。