仅保留 DataFrame 中唯一/不同的行。这与 unique.data.frame()
类似,但速度要快得多。
参数
- .data
-
数据帧、数据帧扩展(例如 tibble)或惰性数据帧(例如来自 dbplyr 或 dtplyr)。有关更多详细信息,请参阅下面的方法。
- ...
-
<
data-masking
> 确定唯一性时使用的可选变量。如果给定的输入组合有多行,则仅保留第一行。如果省略,将使用 DataFrame 中的所有变量。 - .keep_all
-
如果是
TRUE
,则将所有变量保留在.data
中。如果...
的组合不不同,则保留第一行值。
值
与 .data
类型相同的对象。输出具有以下属性:
-
行是输入的子集,但以相同的顺序出现。
-
如果
...
为空或.keep_all
为TRUE
,则不会修改列。否则,distinct()
首先调用mutate()
创建新列。 -
组不被修改。
-
DataFrame 属性被保留。
方法
该函数是泛型函数,这意味着包可以为其他类提供实现(方法)。有关额外参数和行为差异,请参阅各个方法的文档。
加载的包中当前提供以下方法: dbplyr ( tbl_lazy
)、dplyr ( data.frame
) 。
例子
df <- tibble(
x = sample(10, 100, rep = TRUE),
y = sample(10, 100, rep = TRUE)
)
nrow(df)
#> [1] 100
nrow(distinct(df))
#> [1] 67
nrow(distinct(df, x, y))
#> [1] 67
distinct(df, x)
#> # A tibble: 10 × 1
#> x
#> <int>
#> 1 10
#> 2 5
#> 3 9
#> 4 7
#> 5 8
#> 6 6
#> 7 2
#> 8 3
#> 9 4
#> 10 1
distinct(df, y)
#> # A tibble: 10 × 1
#> y
#> <int>
#> 1 2
#> 2 8
#> 3 4
#> 4 6
#> 5 10
#> 6 7
#> 7 9
#> 8 3
#> 9 1
#> 10 5
# You can choose to keep all other variables as well
distinct(df, x, .keep_all = TRUE)
#> # A tibble: 10 × 2
#> x y
#> <int> <int>
#> 1 10 2
#> 2 5 8
#> 3 9 4
#> 4 7 4
#> 5 8 10
#> 6 6 2
#> 7 2 10
#> 8 3 6
#> 9 4 3
#> 10 1 7
distinct(df, y, .keep_all = TRUE)
#> # A tibble: 10 × 2
#> x y
#> <int> <int>
#> 1 10 2
#> 2 5 8
#> 3 9 4
#> 4 10 6
#> 5 8 10
#> 6 10 7
#> 7 9 9
#> 8 4 3
#> 9 10 1
#> 10 5 5
# You can also use distinct on computed variables
distinct(df, diff = abs(x - y))
#> # A tibble: 10 × 1
#> diff
#> <int>
#> 1 8
#> 2 3
#> 3 5
#> 4 4
#> 5 2
#> 6 0
#> 7 1
#> 8 9
#> 9 6
#> 10 7
# Use `pick()` to select columns with tidy-select
distinct(starwars, pick(contains("color")))
#> # A tibble: 67 × 3
#> hair_color skin_color eye_color
#> <chr> <chr> <chr>
#> 1 blond fair blue
#> 2 NA gold yellow
#> 3 NA white, blue red
#> 4 none white yellow
#> 5 brown light brown
#> 6 brown, grey light blue
#> 7 brown light blue
#> 8 NA white, red red
#> 9 black light brown
#> 10 auburn, white fair blue-gray
#> # ℹ 57 more rows
# Grouping -------------------------------------------------
df <- tibble(
g = c(1, 1, 2, 2, 2),
x = c(1, 1, 2, 1, 2),
y = c(3, 2, 1, 3, 1)
)
df <- df %>% group_by(g)
# With grouped data frames, distinctness is computed within each group
df %>% distinct(x)
#> # A tibble: 3 × 2
#> # Groups: g [2]
#> g x
#> <dbl> <dbl>
#> 1 1 1
#> 2 2 2
#> 3 2 1
# When `...` are omitted, `distinct()` still computes distinctness using
# all variables in the data frame
df %>% distinct()
#> # A tibble: 4 × 3
#> # Groups: g [2]
#> g x y
#> <dbl> <dbl> <dbl>
#> 1 1 1 3
#> 2 1 1 2
#> 3 2 2 1
#> 4 2 1 3
相关用法
- R dplyr distinct_all 通过选择变量来选择不同的行
- R dplyr desc 降序
- R dplyr do 做任何事情
- R dplyr group_trim 修剪分组结构
- R dplyr slice 使用行的位置对行进行子集化
- R dplyr copy_to 将本地数据帧复制到远程src
- R dplyr sample_n 从表中采样 n 行
- R dplyr consecutive_id 为连续组合生成唯一标识符
- R dplyr row_number 整数排名函数
- R dplyr band_members 乐队成员
- R dplyr mutate-joins 变异连接
- R dplyr nth 从向量中提取第一个、最后一个或第 n 个值
- R dplyr coalesce 找到第一个非缺失元素
- R dplyr group_split 按组分割 DataFrame
- R dplyr mutate 创建、修改和删除列
- R dplyr order_by 用于排序窗口函数输出的辅助函数
- R dplyr context 有关“当前”组或变量的信息
- R dplyr percent_rank 比例排名函数
- R dplyr recode 重新编码值
- R dplyr starwars 星球大战人物
- R dplyr between 检测值落在指定范围内的位置
- R dplyr cumall 任何、全部和平均值的累积版本
- R dplyr group_map 对每个组应用一个函数
- R dplyr nest_join 嵌套连接
- R dplyr pull 提取单列
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Keep distinct/unique rows。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。