У меня есть DataFrame, в котором я хочу только запустить функцию, если я знаю, что в некоторых столбцах (скажем, что есть 11 столбцов, и я хочу знать это на 4 из их) имеется более одного значения (например, они не все 2). Есть ли какая-то конкретная функция, чтобы найти это, или мне нужно будет проходить через каждый из столбцов и проверять?R: Проверьте, имеет ли столбец более одного значения
0
A
ответ
2
Мы можем использовать sapply
для цикла по столбцам, получить unique
элементов в каждом столбце, проверьте length
ли больше 1. Это дает логический вектор, который может быть использован для подмножества набора данных, если это необходимо.
i1 <- sapply(df1, function(x) length(unique(x)) >1)
df1[i1]
Или другой вариант для подмножества столбцов будет filter
Filter(var, df1)
0
Для каждого запуска колонки length(unique(x))
. Это напечатает количество уникальных столбцов. Если вы предоставите больше информации, это может быть вложено в функцию, которая решает, следует ли запускать на основе сумм length(unique(x))
.
Спасибо! Это намного эффективнее, чем я бы сделал. –
не должно быть [dupe] (http://stackoverflow.com/questions/31409269/returning-only-column-values-that-have-more-than-1-unique-values-in-r)? ;-) – Jaap
@ProcrastinatusMaximus Это может быть, но здесь OP, похоже, хочет только индекс, а не подмножество столбцов. Поэтому я сомневаюсь, что это обман. – akrun