2016-04-20 52 views
1

以下面的示例爲例。我們生成一系列基於cx值的數據幀。使用%命令%獲取特定的數據順序

在第三個示例中,我們生成了df4,我希望data.frame的格式應使對應於c==2的數據位於第一行。使得命令head(df4$A)返回[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 [match(t3,df1 $ A),]'?也許你應該看看'?merge' – Frank

+1

注意,如果t3不是df1 $ A的子集,你將獲得NA行。 – bnord

回答

1

您可以使用順序():

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

@ 42-1的速度更快:)備案:

訂單數據幀

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

訂購該矢量

df4$A[order(t3)] 
#[1] 2 1 4 
相關問題