2016-06-21 3 views
0

У меня есть DataFrame, в котором я хочу только запустить функцию, если я знаю, что в некоторых столбцах (скажем, что есть 11 столбцов, и я хочу знать это на 4 из их) имеется более одного значения (например, они не все 2). Есть ли какая-то конкретная функция, чтобы найти это, или мне нужно будет проходить через каждый из столбцов и проверять?R: Проверьте, имеет ли столбец более одного значения

ответ

2

Мы можем использовать sapply для цикла по столбцам, получить unique элементов в каждом столбце, проверьте length ли больше 1. Это дает логический вектор, который может быть использован для подмножества набора данных, если это необходимо.

i1 <- sapply(df1, function(x) length(unique(x)) >1) 
df1[i1] 

Или другой вариант для подмножества столбцов будет filter

Filter(var, df1) 
+1

Спасибо! Это намного эффективнее, чем я бы сделал. –

+0

не должно быть [dupe] (http://stackoverflow.com/questions/31409269/returning-only-column-values-that-have-more-than-1-unique-values-in-r)? ;-) – Jaap

+0

@ProcrastinatusMaximus Это может быть, но здесь OP, похоже, хочет только индекс, а не подмножество столбцов. Поэтому я сомневаюсь, что это обман. – akrun

0

Для каждого запуска колонки length(unique(x)). Это напечатает количество уникальных столбцов. Если вы предоставите больше информации, это может быть вложено в функцию, которая решает, следует ли запускать на основе сумм length(unique(x)).