从单独的表中进行子集和查找

时间:2016-11-14 15:46:49

标签: r subset grepl

我有这个查找数据框:

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

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

我需要与主DATA FRAME交叉引用,以便我选择变量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))]))

但是有NAs,而且我会有动态的列数,这些都不起作用。

另一个想法是在main_data上使用grepl,但我不能让它一次使用多个变量:

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

我确信有一种直截了当的方法可以做到这一点,但我找不到它。

1 个答案:

答案 0 :(得分:1)

在Roman的帮助下,我明白了:

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