r - отфильтровать все переменные в кадре данных, чтобы хотя бы две из них имели одинаковое значение - PullRequest
0 голосов
/ 15 сентября 2018

Попытка реализовать фильтр, который будет работать через все переменные в кадре данных с условием: если значения хотя бы в двух переменных одинаковы, удалите. Например, если я сделаю этот фрейм данных:

library(dplyr)

a <- c(2,3,4)

df <- expand.grid(rep(list(a), length(a))) 

В этом случае у нас есть только три переменные: Var1, Var2, Var3, и фильтр можно записать так:

df %>% filter(!(Var1 == Var2 | Var2 == Var3 | Var1 == Var3))

Может ли фильтрация, подобная этой, применяться к n числу переменных в кадре данных?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Один вариант будет использовать anyDuplicated

df[!apply(df, 1, anyDuplicated),]

Или используя tidyverse

library(tidyverse)
pmap_lgl(df, ~ !anyDuplicated(c(...))) %>% 
          magrittr::extract(df, ., )
0 голосов
/ 15 сентября 2018

Вы можете посчитать количество уникальных значений в строке и удалить строки, где ncol

nunique <- apply(df, 1, function(x) length(unique(x)))

df <- df[nunique == ncol(df), ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...