在'dplyr'库中用'select'functionselect唯一的值
是否有可能使用dplyr
库中的select
函数从dplyr
的列中select所有唯一值? 像SQL
表示法中的“ SELECT DISTINCT field1 FROM table1
”。
谢谢!
在dplyr 0.3中,可以使用distinct()
方法轻松实现。
这里是一个例子:
distinct_df = df %>% distinct(field1)
您可以通过以下方式获得不同值的向量:
distinct_vector = distinct_df$field1
您也可以在执行distinct()
调用的同时select列的子集,如果使用head / tail / glimpse检查数据框,则可以更清晰地查看。
distinct_df = df %>% distinct(field1) %>% select(field1) distinct_vector = distinct_df$field1
dplyr
select
function从数据框中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)
这既从dplyr
返回的数据框中的所有列中select列x
(当然在这种情况下只有一列)并将其名称更改为unique.x
。
你也可以用unique(dat$x)
直接在base R
获得唯一的值。
如果您有多个variables,并希望数据中出现所有唯一的组合,则可以按照以下方式概括上述代码:
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)
只需添加其他答案,如果您希望返回vector而不是数据框,则可以使用以下选项:
dplyr <0.7.0
将dplyr函数括在括号中,并将其与$
语法结合使用:
(mtcars %>% distinct(cyl))$cyl
dplyr> = 0.7.0
使用pull
词:
mtcars %>% distinct(cyl) %>% pull()