eag*_*ent 5 r subset duplicates
我有一个包含多个变量的数据框,我对如何对其进行子集化以使其仅包含第一个重复项很感兴趣。
>head(occurrence)
userId occurrence profile.birthday profile.gender postDate count
1 100469891698 6 47 Female 583 days 0
2 100469891698 6 47 Female 55 days 0
3 100469891698 6 47 Female 481 days 0
4 100469891698 6 47 Female 583 days 0
5 100469891698 6 47 Female 583 days 0
6 100469891698 6 47 Female 583 days 0
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到数据框。'occurrence' 列计算同一个 userId 出现的次数。我尝试了以下代码来删除重复项:
occurrence <- occurrence[!duplicated(occurrence$userId),]
Run Code Online (Sandbox Code Playgroud)
但是,通过这种方式它可以删除“随机”重复项。我想保留 postDate 最旧的数据。例如,第一行应该是这样的:
userId occurrence profile.birthday profile.gender postDate count
1 100469891698 6 47 Female 583 days 0
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
小智 5
您是否尝试先这样订购:
occurrence <- occurrence[order(occurrence$userId, occurrence$postDate, decreasing=TRUE),]
occurrenceClean <- occurrence[!duplicated(occurrence$userId),]
occurrenceClean
Run Code Online (Sandbox Code Playgroud)
您可以使用 dplyr 来执行此操作,并在过滤最大 postDate 后,使用不同的(唯一的)来删除所有重复的行。当然,如果最大 postDate 的行存在差异,您将获得所有这些记录。
occurrence <- occurrence %>%
group_by(userId) %>%
filter(postDate == max(postDate)) %>%
distinct
occurence
# A tibble: 1 x 6
# Groups: userId [1]
userId occurrence profile.birthday profile.gender postDate count
<dbl> <int> <int> <chr> <chr> <int>
1 100469891698 6 47 Female 583 days 0
Run Code Online (Sandbox Code Playgroud)