删除仅一个变量的重复项

the*_*ide 1 r dplyr

我有一个数据框,我想通过删除重复项来压缩,但只有某个变量.在下面的例子中,我只想删除重复的user_id时间plan_type = subscriber.所述output的如下所示的采样数据应该如何被冷凝.

我已经尝试unique()但它不会工作,因为可能会有多次出现相同的user_id位置,plan_type = PPG并且此数据应保留.

任何建议不包括子集化然后重新绑定两个数据帧的多个步骤?

> foo
      user_id  plan_type
16435    6264 subscriber
31518   10050 subscriber
31520   10050 subscriber
7576    11174 subscriber
19744   11186 subscriber
19745   11186 subscriber
46108   20348 subscriber
5293    31641 subscriber
5294    31641 subscriber
5295    31641        PPU


> output
      user_id  plan_type
16435    6264 subscriber
31520   10050 subscriber
7576    11174 subscriber
19745   11186 subscriber
46108   20348 subscriber
5294    31641 subscriber
5295    31641        PPU

> dput(foo)
structure(list(user_id = c(6264L, 10050L, 10050L, 11174L, 11186L, 
11186L, 20348L, 31641L, 31641L, 31641L), plan_type = c("subscriber", 
"subscriber", "subscriber", "subscriber", "subscriber", "subscriber", 
"subscriber", "subscriber", "subscriber", "PPU")), .Names = c("user_id", 
"plan_type"), row.names = c(16435L, 31518L, 31520L, 7576L, 19744L, 
19745L, 46108L, 5293L, 5294L, 5295L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

tal*_*lat 6

你想只子集那些意见user_id重复的OR plan_type不是 "用户":

foo[!duplicated(foo$user_id) | foo$plan_type != "subscriber", ]
Run Code Online (Sandbox Code Playgroud)

使用dplyr,这将是

library(dplyr)
foo %>% filter(!duplicated(user_id) | plan_type != "subscriber")
Run Code Online (Sandbox Code Playgroud)