R 基于多列检索唯一记录的数据帧

R 基于多列检索唯一记录的数据帧,r,R,我正在使用成对校正函数来生成文本中的单词相关性。问题是,当考虑到两列的组合时,输出包含重复的行。我想过滤掉重复的行 下面是一个极其简化的示例: item1 <- c("dog", "cat", "horse", "cow", "chicken", "sheep") item2 <- c("cat", "dog", "cow", "horse", "sheep", "chicken") correlation <- c(2,2,3,3,4,4) df <- cbind.d

我正在使用成对校正函数来生成文本中的单词相关性。问题是,当考虑到两列的组合时,输出包含重复的行。我想过滤掉重复的行

下面是一个极其简化的示例:

item1 <- c("dog", "cat", "horse", "cow", "chicken", "sheep")
item2 <- c("cat", "dog", "cow", "horse", "sheep", "chicken")
correlation <- c(2,2,3,3,4,4)

df <- cbind.data.frame(item1, item2, correlation)
df


    item1   item2 correlation
1     dog     cat     2
2     cat     dog     2
3   horse     cow     3
4     cow   horse     3
5 chicken   sheep     4
6   sheep chicken     4

这不仅仅是一个使用unique()的简单问题,至少我能理解。

这里有一个使用
sqldf
包的选项。假设您不关心从副本中保留的
相关性
,我们可以尝试:

library(sqldf)

sql <- "SELECT MIN(item1, item2) AS item1, MAX(item1, item2) AS item2,
               MAX(correlation) AS correlation
        FROM df
        GROUP BY MIN(item1, item2), MAX(item1, item2)"

output <- sqldf(sql)
库(sqldf)

有一件事我忘了注意:“重复”行并不总是在每一行上。重复:酷。谢谢你的澄清!
library(sqldf)

sql <- "SELECT MIN(item1, item2) AS item1, MAX(item1, item2) AS item2,
               MAX(correlation) AS correlation
        FROM df
        GROUP BY MIN(item1, item2), MAX(item1, item2)"

output <- sqldf(sql)