R语言 如何筛选数据集,使其在列中具有唯一值,而不删除目标列中已经唯一的值?

vbopmzt1  于 2023-02-27  发布在  其他
关注(0)|答案(2)|浏览(112)

我有一个 Dataframe ,需要按如下方式进行筛选

library(dplyr)
library(tidyverse)

df = data.frame(x = rep(1,20), y = c(rep(2,5),rep(3,5),11:20) )

df = df%>%group_by(x)%>%filter(y==unique(y))

但是输出是

df = df%>%group_by(x)%>%filter(y==unique(y))
Warning message:
In y == unique(y) :
  longer object length is not a multiple of shorter object length
> df
# A tibble: 1 × 2
# Groups:   x [1]
      x     y
  <dbl> <dbl>
1     1     2

我所寻找的结果如下

x  y
1  1  2
2  1  3
3  1 11
4  1 12
5  1 13
6  1 14
7  1 15
8  1 16
9  1 17
10 1 18
11 1 19
12 1 20

谢谢

kd3sttzy

kd3sttzy1#

我想你要找的是distinct()

library(dplyr)

df = data.frame(x = rep(1,20), y = c(rep(2,5),rep(3,5),11:20) )

df %>% group_by(x) %>% distinct(y)
#> # A tibble: 12 × 2
#> # Groups:   x [1]
#>        x     y
#>    <dbl> <dbl>
#>  1     1     2
#>  2     1     3
#>  3     1    11
#>  4     1    12
#>  5     1    13
#>  6     1    14
#>  7     1    15
#>  8     1    16
#>  9     1    17
#> 10     1    18
#> 11     1    19
#> 12     1    20

创建于2023年2月20日,使用reprex v2.0.2

ctzwtxfj

ctzwtxfj2#

base R中,只需使用unique

unique(df)
  • 输出
x  y
1  1  2
6  1  3
11 1 11
12 1 12
13 1 13
14 1 14
15 1 15
16 1 16
17 1 17
18 1 18
19 1 19
20 1 20

相关问题