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