删除r中另一列中具有相同id但不同值的行

D J*_*Jay 4 r

我有一个数据框如下:

id = c("a2887", "a2887", "a5511","a5511","a2806", "a1491", "a1491", "a4309", "a4309") 
plan = c("6V", "6V", "25HS", "50HS", "25HS", "250Mbps", "250Mbps", "15Mbps", "15Mbps") 
df = data.frame(id, plan)
Run Code Online (Sandbox Code Playgroud)

看起来像:

   id    plan 
a2887      6V
a2887      6V
a5511    25HS
a5511    50HS
a2806    25HS
a1491 250Mbps
a1491 250Mbps
a4309  15Mbps
a4309  15Mbps
Run Code Online (Sandbox Code Playgroud)

我想删除具有相同 ID 但在列计划中具有不同值的行,只保留具有唯一 ID/计划匹配的行并创建一个新的数据框,如下所示:

   id    plan
a2887      6V
a2806    25HS
a1491 250Mbps
a4309  15Mbps
Run Code Online (Sandbox Code Playgroud)

有没有什么优雅的方法来实现这一目标?谢谢!

akr*_*run 6

我们可以使用tidyverse. 按“id”分组后,“id”filter组只有一个唯一的“计划”值并获取distinct

library(dplyr)
df %>%
   group_by(id) %>%
   filter(n_distinct(plan)==1) %>%
   distinct()
# A tibble: 4 x 2
# Groups: id [4]
#  id     plan   
#  <fctr> <fctr> 
#1 a2887  6V     
#2 a2806  25HS   
#3 a1491  250Mbps
#4 a4309  15Mbps 
Run Code Online (Sandbox Code Playgroud)