2016-11-14 10 views
0

У меня есть этот поиск кадр данных:Subset и поиск из отдельной таблицы

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

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

, который мне нужно пересечь ссылку с основным кадром данных, так что я выбираю переменные X1 Х5. Иногда, как и в примере, столбец 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))])) 

но есть NAs, и к тому же у меня будет динамический подсчет столбцов, и они не работают.

Другая идея состоит в том, чтобы использовать grepl на main_data, но я не могу заставить его работать с более чем одной переменной в то время:

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

Я уверен, есть простой способ сделать это, но я не могу Найди это.

+0

Другой способ заставить 'df' вектору и использовать'% в% '. Например. 'main_data [, names (main_data)% in% yourvector]'. –

+0

@ RomanLuštrik Хорошая мысль, я тестирую это сейчас. –

ответ

1

С помощью Романа я получил его:

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