R 如何对数据帧进行子集,使其只保留第一个副本?

R 如何对数据帧进行子集,使其只保留第一个副本?,r,duplicates,subset,R,Duplicates,Subset,我有一个包含多个变量的数据帧,我对如何将其子集以使其只包含第一个副本感兴趣 >head(occurrence) userId occurrence profile.birthday profile.gender postDate count 1 100469891698 6 47 Female 583 days 0 2 100469891698 6

我有一个包含多个变量的数据帧,我对如何将其子集以使其只包含第一个副本感兴趣

    >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
在这里您可以看到数据帧。“发生”列统计同一用户ID发生的次数。我已尝试使用以下代码删除重复项:

    occurrence <- occurrence[!duplicated(occurrence$userId),]

谢谢你的帮助

您可以使用dplyr进行此操作,并在对max postDate进行筛选后,使用一个独特的(唯一的)选项删除所有重复的行。当然,如果max 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
发生率%
分组人(用户ID)%>%
筛选器(postDate==最大值(postDate))%>%
不同的
发生
#一个tibble:1 x 6
#组:userId[1]
用户ID事件配置文件.生日配置文件.性别后日期计数
100469891698 6 47女性583天0

您是否先尝试这样订购:

occurrence <- occurrence[order(occurrence$userId, occurrence$postDate, decreasing=TRUE),]
occurrenceClean <- occurrence[!duplicated(occurrence$userId),]
occurrenceClean

欢迎使用堆栈溢出<代码>重复
标记为
除第一个事件外的所有事件(无随机性)。但是,您的数据可能不会按
postDate
排序(递减),因此您需要在通话前对其进行排序,或者使用另一种方式,即按
postDate
分组,并且每个
用户ID只保留一行(您可以找到)
occurrence <- occurrence[order(occurrence$userId, occurrence$postDate, decreasing=TRUE),]
occurrenceClean <- occurrence[!duplicated(occurrence$userId),]
occurrenceClean