是否可以使用data.frame
库中的select
函数从dplyr
的列中选择所有唯一值?
像" SELECT DISTINCT field1 FROM table1
"以SQL
表示法。
谢谢!
答案 0 :(得分:84)
在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
答案 1 :(得分:12)
只是为了添加其他答案,如果您希望返回向量而不是数据帧,则可以使用以下选项:
dplyr <0.7.0
将dplyr函数括在括号中并将其与 $
语法结合使用:
(mtcars%>%distinct(cyl))$ cyl
代码>
dplyr> = 0.7.0
使用 pull
动词:
mtcars%>%distinct(cyl)%>%pull()
代码>
答案 2 :(得分:8)
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
如果要更改列名,可以添加以下内容:
dat %>%
group_by(x) %>%
summarise() %>%
select(unique.x=x)
这两者都从x
返回的数据框中的所有列中选择列dplyr
(当然在这种情况下只有一列)并将其名称更改为{ {1}}。
您还可以使用unique.x
直接在基本R
中获取唯一值。
如果您有多个变量并希望数据中出现所有唯一组合,您可以按如下方式推广上述代码:
unique(dat$x)