2015-09-26 77 views
-1

假設我有這樣一個數據幀的列向量數據幀:子集由不同的數據框

dfA<-data.frame(A=c(letters[1:3]),B=c(letters[4:6]),C=c(letters[7:9])) 

>dfA 
    A B C 
1 a d g 
2 b e h 
3 c f i 

,另外一個是這樣的:

dfB<-data.frame(replicate(12,sample(0:5,5,rep=T))) 
colnames(dfB)<-sample(letters[1:9],12,rep=T) 

> dfB 
    a a d d g e i c i a g h 
1 0 3 3 2 2 1 2 4 1 2 4 0 
2 2 2 3 0 0 0 4 4 1 5 2 1 
3 4 5 0 3 2 4 3 5 1 4 2 3 
4 0 1 0 4 4 3 2 2 1 2 3 1 
5 4 0 2 1 2 4 0 5 5 0 5 1 

我怎麼能是指從所有列dfB,其名稱包含在dfA的A列中?

我對R相當陌生,搜索了很多這個論壇,但無法得到確切的答案。 我試過這樣的:sub<-subset(dfB, !colnames(dfB) %in% dfA$A)目前爲止效果不理想。

輸出我倒是想獲得是:

> sub 
    a a c a 
1 0 3 4 2 
2 2 2 4 5 
3 4 5 5 4 
4 0 1 2 2 
5 4 0 5 0 

誰能幫助?

+0

'dfB [colnames(dfB)%in%dfA $ A]'或'subset(dfB,select = colnames(dfB)%in%dfA $ A)' – akrun

+1

Worked!我希望這會很容易。謝謝 –

+0

也可以用'dfB [match(dfA $ A,names(dfB),0L)]' –

回答

1

爲akrun在評論中指出

subset(dfB, select=colnames(dfB) %in% dfA$A) 

完美。