【发布时间】:2019-01-14 05:40:30
【问题描述】:
假设我有以下数据:
dt <- data.frame(id=c(1,1,2,2,3,3,3,4,5,5,5,5,6,7,7),
rk=c("a","a","b","b","c","y","c","d","e","y","e","e","f","g","h"),
.id=c("df1", "df9", "df5", "df16", "df2", "df11", "df11", "df4", "df9", "df4", "df6", "df3", "df16", "df2", "df9"))
所以我的数据看起来像这样:
id rk .id
1 a df1
1 a df9
2 b df5
2 b df16
3 c df2
3 y df11
3 c df11
4 d df4
5 e df9
5 y df4
5 e df6
5 e df3
6 f df16
7 g df2
7 h df9
但我只希望每对 id 和 rk 有 一个 行。 因此,在示例中,id=5 可以有两行:一行 rk=e,另一行 rk=y。
要找到要保留的正确行,我查看 .id 列。这里我按以下顺序排列优先级:
df2、df9、df1、df5、df4、df6、df15、df17、df16、df14、df8、df11、df3、df7、df12、df13、df10
所以我总是在 .id=df9 的一行上保留 .id=df2 的一行。同样,我将始终保留 .id=df15 的行而不是 .id=df14 的行。
请注意,顺序不是按时间顺序排列的。
回到我的示例数据,这就是我想要得到的结果:
id rk .id
1 a df9
2 b df5
3 c df2
3 y df11
4 d df4
5 e df9
5 y df4
6 f df16
7 g df2
7 h df9
我的数据集很大,所以我希望你们中的一些人可以帮助我编写一些代码,让这很容易。
【问题讨论】:
标签: r duplicates conditional-statements