我有一个带有多个变量的数据框,并且我对如何对其进行子集感兴趣,以便仅包含第一个重复项。
>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
在这里您可以看到数据框。 “出现次数”列计算出同一userId发生了多少次。我尝试使用以下代码删除重复项:
occurrence <- occurrence[!duplicated(occurrence$userId),]
但是,它以这种方式删除“随机”重复项。我想保留postDate最早的数据。因此,例如第一行应如下所示:
userId occurrence profile.birthday profile.gender postDate count
1 100469891698 6 47 Female 583 days 0
谢谢您的帮助!
答案 0 :(得分:1)
您可以为此使用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
答案 1 :(得分:1)
您是否先尝试过这样订购:
occurrence <- occurrence[order(occurrence$userId, occurrence$postDate, decreasing=TRUE),]
occurrenceClean <- occurrence[!duplicated(occurrence$userId),]
occurrenceClean