r 根据列中的值过滤重复行
r filter duplicate rows based on value in column
我有这样的数据集
Id Date Col1 Col2 Col3
1 1/1/1995 NA 1 A
1 5/3/1887 2 2 B
2 3/10/1992 0 1 B
3 8/15/2002 1 1 B
我喜欢 select 行,其中 Col3=A 仅当行为该 ID 重复时
预期数据集
Id Date Col1 Col2 Col3
1 1/1/1995 NA 1 A
2 3/10/1992 0 1 B
3 8/15/2002 1 1 B
我试过了
df %>%
group_by(Id)%>%
filter(Col3 == "A")
这不符合我的预期。我只得到一行 ID=1 和 Col3=A,这不是我所期望的。非常感谢任何关于我哪里出错的建议。提前致谢。
这里有一个选项
df %>%
group_by(Id) %>%
filter(Col3 == "A" | n() == 1) %>%
ungroup()
## A tibble: 3 x 5
# Id Date Col1 Col2 Col3
# <int> <chr> <int> <int> <chr>
#1 1 1/1/1995 NA 1 A
#2 2 3/10/1992 0 1 B
#3 3 8/15/2002 1 1 B
这会保留 Col3 == "A"
所在的行或每组保留一行。 PS。我建议始终使用 ungroup()
以避免下游出现不必要的意外。
我有这样的数据集
Id Date Col1 Col2 Col3
1 1/1/1995 NA 1 A
1 5/3/1887 2 2 B
2 3/10/1992 0 1 B
3 8/15/2002 1 1 B
我喜欢 select 行,其中 Col3=A 仅当行为该 ID 重复时
预期数据集
Id Date Col1 Col2 Col3
1 1/1/1995 NA 1 A
2 3/10/1992 0 1 B
3 8/15/2002 1 1 B
我试过了
df %>%
group_by(Id)%>%
filter(Col3 == "A")
这不符合我的预期。我只得到一行 ID=1 和 Col3=A,这不是我所期望的。非常感谢任何关于我哪里出错的建议。提前致谢。
这里有一个选项
df %>%
group_by(Id) %>%
filter(Col3 == "A" | n() == 1) %>%
ungroup()
## A tibble: 3 x 5
# Id Date Col1 Col2 Col3
# <int> <chr> <int> <int> <chr>
#1 1 1/1/1995 NA 1 A
#2 2 3/10/1992 0 1 B
#3 3 8/15/2002 1 1 B
这会保留 Col3 == "A"
所在的行或每组保留一行。 PS。我建议始终使用 ungroup()
以避免下游出现不必要的意外。