选择'选择'选择唯一值功能在' dplyr'图书馆

时间:2014-08-29 15:33:30

标签: r select unique dplyr

是否可以使用data.frame库中的select函数从dplyr的列中选择所有唯一值? 像" SELECT DISTINCT field1 FROM table1"以SQL表示法。

谢谢!

3 个答案:

答案 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)