2

所以我一直在玩 R 中的数据框,尽管我仍然在 Python 中思考太多,似乎无法找到解决我的问题的方法。

我有一个数据框,其中一列是用户 ID。我想删除所有第一次出现的数字,例如:

1,2,3,4,3,4,2,1,3,4,6,7,7

我想要这样的输出:

 3,4,2,1,3,4,7

user_id 第一次出现的地方我会删除它,但即使重复也会保留所有其他人。

使用 python 我可能会使用枚举或循环它。对于 R,我看到了一些看起来很酷的函数,但我不确定如何将它与数据框一起使用,比如 rle。

任何指针都会非常有帮助,因为现在我对解决这个问题的最佳方法有点迷茫。

谢谢你们

4

1 回答 1

6

该功能duplicated()将在这里有所帮助:

x <- c(1,2,3,4,3,4,2,1,3,4,6,7,7)
> x[duplicated(x)]
[1] 3 4 2 1 3 4 7

这是有效的,因为duplicated()返回一个逻辑向量,指示该元素是否重复:

duplicated(x)
 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE

然后,您使用此逻辑向量从 x 中子集(提取)您想要的值。但请注意,在提取过程中,我保留了所有重复的值,而不是删除它们。

要删除所有重复的值(不是您想要的,但无论如何我都会说明),请尝试否定:

x[!duplicated(x)]
[1] 1 2 3 4 6 7
于 2012-12-30T21:36:27.957 回答