Извлечение фрейма данных уникальных записей на основе нескольких столбцов - PullRequest
0 голосов
/ 22 января 2019

Я использую функцию pairwise_cor для генерации корреляций слов в тексте. Проблема в том, что выходные данные содержат повторяющиеся строки, если учитывать комбинацию двух столбцов. Я хочу отфильтровать дублирующиеся строки.

Вот чрезвычайно упрощенный пример:

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

Таким образом, строки 1 и 2 одинаковы, только с триггерами item1 и item2. И то же самое для строк 3 и 4, а также для строк 5 и 6.

Я хочу, чтобы выходной кадр данных после фильтрации был:

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

Это не просто вопрос использования unique (), по крайней мере, я могу понять.

1 Ответ

0 голосов
/ 22 января 2019

Вот один вариант использования пакета sqldf. Предполагая, что вас не волнует , какие correlation вы сохраните от дубликатов, мы можем попробовать:

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 может оказаться полезной для вас, поскольку таблицы SQL основаны на неупорядоченных записях. Таким образом, смежные требования не являются проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...