Я работаю с набором данных радужной оболочки и манипулирую им следующим образом, чтобы получить фрейм данных вида, особенности1, особенности2, значения:
gatherpairs <- function(data, ...,
xkey = '.xkey', xvalue = '.xvalue',
ykey = '.ykey', yvalue = '.yvalue',
na.rm = FALSE, convert = FALSE, factor_key = FALSE) {
vars <- quos(...)
xkey <- enquo(xkey)
xvalue <- enquo(xvalue)
ykey <- enquo(ykey)
yvalue <- enquo(yvalue)
data %>% {
cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars,
na.rm = na.rm, convert = convert, factor_key = factor_key),
select(., !!!vars))
} %>% gather(., key = !!ykey, value = !!yvalue, !!!vars,
na.rm = na.rm, convert = convert, factor_key = factor_key)%>%
filter(!(.xkey == .ykey)) %>%
mutate(var = apply(.[, c(".xkey", ".ykey")], 1, function(x) paste(sort(x), collapse = ""))) %>%
arrange(var)
}
test = iris %>%
gatherpairs(sapply(colnames(iris[, -ncol(iris)]), eval))
Это взято из https://stackoverflow.com/a/47731111/8315659
Это дает мне этот фрейм данных со всеми комбинациями feature1 и feature2, но я хочу удалить дубликаты, если показано только обратное.Например, Petal.Length vs Petal.Width совпадает с Petal.Width vs Petal.Length.Но если есть две строки с одинаковыми значениями для Petal.Length и Petal.Width, я не хочу отбрасывать эту строку.Поэтому я просто хотел бы убрать строки, в которых все значения идентичны, за исключением того, что .xkey и .ykey перевернуты.По сути, это просто для воссоздания нижнего треугольника матрицы ggplot, показанной в приведенном выше связанном ответе.
Как это можно сделать?Jack