2016-11-14 29 views
0

我有這樣的查找數據幀:子集和查找從單獨的表

VAR1=c('X1') 
    VAR2=c('X2') 
    VAR3=c('X3') 
    VAR4=c('X4') 
    VAR5=c('NA') 

    df<-data.frame(VAR1,VAR2,VAR3,VAR4,VAR5) 

我需要與主數據幀交叉引用,以便我選擇變量X1至X5。有時候,就像這個例子,第5列簡直就是NA。

我通常會使用類似下面:

main_data <-subset(main_data, select=c(df[1,1],df[1,2],df[1,3])) 

main_data <-subset(main_data, select=c(df[1,1:max(col(df))])) 

但也有來港,而且我會列一個動態的數量,這些不工作。

另一個想法是對main_data使用grepl但我不能讓它同時與多個變量工作:

main_data <- main_data[, grepl(paste0(df[1:max(col(df))], colnames(main_data)))] 

我敢肯定有一個簡單的方法來做到這一點,但我不能找到它。

+0

另一種方法是強迫'df'矢量和使用'%'%。例如。 'main_data [,%yourvector]中的名稱(main_data)%')。 –

+0

@RomanLuštrik好點,我現在正在測試這一個。 –

回答

1

隨着羅馬的幫助下,我得到了它:

df<-as.vector(unlist(df)) 
    main_data<-main_data[, names(main_data) %in% df]