2016-04-20 7 views
1

Nehmen Sie das folgende Beispiel. Wir erzeugen eine Reihe von Datenrahmen, die auf cx Werten basieren.spezifische Reihenfolge der Daten mit dem Befehl% in% erhalten

Im dritten Beispiel, in dem wir df4 generieren, möchte ich, dass der data.frame so formatiert wird, dass die Daten, die c==2 entsprechen, in der ersten Zeile stehen. So dass der Befehl head(df4$A) kehrt [1] 2 1 4

# data to play with 
set.seed(123) 
A <- c(1:10) 
B <- sample(5:9,10,replace = T) 
df1 <- data.frame(A,B) 

# the values of interest 
t1 <- c(1,2,3,4) 
# subset df1 based on t1 
df2 <- subset(df1, df1$A %in% t1) 
head(df2$A) 

# again the values of interest 
t2 <- c(2,3,4) 
# subset df1 based on t2 
df3 <- subset(df1, df1$A %in% t2) 
head(df3$A) 

# once again the values of interest 
t3 <- c(2,1,4) 
# subset df1 based on t2 
df4 <- subset(df1, df1$A %in% t3) 
head(df4$A) 
+3

'df1 [Übereinstimmung (t3, df1 $ A),]'? Vielleicht sollten Sie sich "? Merge" ansehen? – Frank

+1

Beachten Sie, dass Sie NA-Zeilen erhalten werden, wenn t3 keine Teilmenge von df1 $ A ist. – bnord

Antwort

1

können Sie verwenden, um():

> df4[order(t3) , ] 
    A B 
2 2 8 
1 1 6 
4 4 9 
1

@ 42- war schneller :) für den Rekord:

Bestellen Sie den Datenrahmen

df4[order(t3),] 
# A B 
#2 2 8 
#1 1 6 
#4 4 9 

Bestellen Sie den Vektor

df4$A[order(t3)] 
#[1] 2 1 4 
Verwandte Themen