2016-09-20 6 views
-5

In R Ich versuche, ein df mit mehreren Vektoren, die kategorisch sind, zu unterteilen. Beide Vektoren sind Faktoren, und ich versuche, einen Teilmengenvektor zurückzugeben, der die folgenden Bedingungen erfüllt. Aus der Spalte namens Tail möchte ich nur die Tails identifizieren, die Klasse 1 sind.Subsetting mehrerer Vektoren basierend auf einer bestimmten Bedingung

Zum Beispiel nur die letzte Teilmenge sollte nur Schwanz B-123 und B-888 enthalten, da sie die einzigen zwei Tails sind haben beide Klasse 1 & 2, während die restlichen Tails nur Klasse 1 oder Klasse 2 sind. Ich habe dplyr Filter und Angabe von Bedingungen verwendet, aber konnte nicht die richtigen Ergebnisse liefern.

Tail 
B-123 
B-645 
B-938 
B-123 
B-645 
B-938 
B-888 
B-888 
---------- 
Class 
1 
2 
1 
2 
2 
1 
1 
2 

Antwort

0

Nun, ich bin nicht sicher, ob Tail und Class Teil des gleichen Datenrahmen sind oder zwei getrennte Vektoren. Wenn sie zwei getrennte Vektoren sind, vielleicht können Sie die beiden Vektoren in einem Datenrahmen

df <- data.frame(Tail = as.character(Tail), Class = as.character(Class)) 

fusionieren und dann mit dplyr können Sie versuchen,

library(dplyr) 
df %>% 
    group_by(Tail) %>% 
    summarise(uniq=n_distinct(Class)) %>% 
    filter(uniq ==2) 

# Tail uniq 
# (fctr) (int) 
#1 B-123  2 
#2 B-888  2 
+0

Ja sie Teil derselben df sind. Ich versuche jedoch, nach einzigartigen Tails zu filtern, die Klasse 1 und auch Klasse 2 haben, nicht nur Klasse 2. Hoffe, das macht Sinn. Danke für den Versuch. – Nick

+0

@Nick Hast du die angebotene Lösung getestet? Es sollte funktionieren. –

+1

ja danke, es hat funktioniert – Nick

Verwandte Themen