假设我有一个包含两列或更多列的数据框df,有没有一种简单的方法可以使用unique()或其他R函数来创建两列或更多列的唯一组合的子集?
unique()
我知道我可以使用sqldf()和编写一个简单的"SELECT DISTINCT var1, var2, ... varN"查询,但是我正在寻找一种R的方式来做到这一点。
sqldf()
"SELECT DISTINCT var1, var2, ... varN"
我 想到 尝试将 ftable 强制转换为 数据 框 并使用字段名称,但是我也得到了数据集中不存在的组合的交叉表:
uniques <- as.data.frame(ftable(df$var1, df$var2))
unique工程,data.frame所以unique(df[c("var1","var2")])应该是你想要的。
unique
data.frame
unique(df[c("var1","var2")])
另一个选择是distinct从dplyrpackage:
distinct
dplyr
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)))。
distinct(select(df, var1, var2))