2016-06-21 8 views
0

Ich habe ein Datenframe, in dem ich nur eine Funktion ausführen möchte, wenn ich das in bestimmten Spalten weiß (sagen wir, es gibt 11 Spalten und ich will das auf 4 von wissen es gibt mehr als einen Wert (zB sind es nicht alle 2). Gibt es eine bestimmte Funktion, um dies herauszufinden oder müsste ich jede der Spalten durchlaufen und überprüfen?R: Prüfe, ob eine Spalte mehr als einen Wert hat

Antwort

2

Wir können sapply zu Schleife über die Spalten verwenden, erhalten die unique Elemente in jeder Spalte prüfen, ob die length größer als 1 ist es ein logischer Vektor gibt, die für subsetting den Datensatz verwendet werden kann, wenn nötig.

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

Oder eine andere Option Spalten der Teilmenge wird length(unique(x)) Für jede Spalte laufen filter

Filter(var, df1) 
+1

Danke! Das ist viel effizienter als ich es getan hätte. –

+0

sollte dies nicht ein [dupe] (http://stackoverflow.com/questions/31409269/returning-only-column-values-that-have-more-than-1-unique-values-in-r) sein? ;-) – Jaap

+0

@ProcrastinatusMaximus Es könnte sein, aber hier scheint das OP nur den Index und nicht die Teilmenge der Spalten zu wollen. Also bezweifle ich, dass es ein Betrogener ist. – akrun

0

sein. Dadurch wird die Anzahl der eindeutigen Spalten gedruckt. Wenn Sie mehr Informationen bereitstellen, kann dies in eine Funktion geschachtelt werden, die basierend auf den Summen von length(unique(x)) entscheidet, ob sie ausgeführt werden soll oder nicht.

Verwandte Themen