一尘不染

与两个或多个字段/变量上的SELECT DISTINCT等效

sql

假设我有一个包含两列或更多列的数据框df,有没有一种简单的方法可以使用unique()或其他R函数来创建两列或更多列的唯一组合的子集?

我知道我可以使用sqldf()和编写一个简单的"SELECT DISTINCT var1, var2, ... varN"查询,但是我正在寻找一种R的方式来做到这一点。

想到 尝试将 ftable 强制转换为 数据 并使用字段名称,但是我也得到了数据集中不存在的组合的交叉表:

uniques <- as.data.frame(ftable(df$var1, df$var2))

阅读 123

收藏
2021-03-10

共1个答案

一尘不染

unique工程,data.frame所以unique(df[c("var1","var2")])应该是你想要的。

另一个选择是distinctdplyrpackage

df %>% distinct(var1, var2) # or distinct(df, var1, var2)

笔记:

对于较旧版本的dplyr(<
0.5.0,2016-06-24 )distinct需要执行附加步骤

df %>% select(var1, var2) %>% distinct

(或古老的方式distinct(select(df, var1, var2)))。

2021-03-10