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)