Ron*_*man 87
在dplyr 0.3中,这可以使用该distinct()
方法容易地实现.
这是一个例子:
distinct_df = df %>% distinct(field1)
您可以使用以下内容获取不同值的向量:
distinct_vector = distinct_df$field1
您还可以在执行distinct()
调用的同时选择列的子集,如果使用head/tail/glimpse检查数据框,则可以更清晰地查看:
distinct_df = df %>% distinct(field1) %>% select(field1)
distinct_vector = distinct_df$field1
Jos*_*lan 12
只是为了添加其他答案,如果您希望返回向量而不是数据帧,则可以使用以下选项:
dplyr <0.7.0
将dplyr函数括在括号中并将其与$
语法结合使用:
(mtcars %>% distinct(cyl))$cyl
Run Code Online (Sandbox Code Playgroud)
dplyr> = 0.7.0
使用pull
动词:
mtcars %>% distinct(cyl) %>% pull()
Run Code Online (Sandbox Code Playgroud)
该dplyr
select
函数从数据框中选择特定列.要在特定数据列中返回唯一值,可以使用该group_by
函数.例如:
library(dplyr)
# Fake data
set.seed(5)
dat = data.frame(x=sample(1:10,100, replace=TRUE))
# Return the distinct values of x
dat %>%
group_by(x) %>%
summarise()
x
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Run Code Online (Sandbox Code Playgroud)
如果要更改列名,可以添加以下内容:
dat %>%
group_by(x) %>%
summarise() %>%
select(unique.x=x)
Run Code Online (Sandbox Code Playgroud)
这两者都x
从数据框中dplyr
返回的所有列中选择列(当然在这种情况下只有一列)并将其名称更改为unique.x
.
您也可以直接在基地得到的唯一值R
用unique(dat$x)
.
如果您有多个变量并希望数据中出现所有唯一组合,则可以按如下方式概括上述代码:
set.seed(5)
dat = data.frame(x=sample(1:10,100, replace=TRUE),
y=sample(letters[1:5], 100, replace=TRUE))
dat %>%
group_by(x,y) %>%
summarise() %>%
select(unique.x=x, unique.y=y)
Run Code Online (Sandbox Code Playgroud)