Select 行、列和另一组基于向量的列

Select rows, columns, and another group of columns based on vector

如何select特定行;具体列名;以及另一组基于向量的特定列名称?

我的数据:

#my data
ID<-c(1,2,3,4,5,6)
Month<-c('Jan','Jan','Mar','Feb','Mar','Jan')
Number<-c(6,5,4,3,2,1)
Color<-c('Red','Red','Blue','Green','Green','Purple')
Q1<-c(0,1,NA,1,0,1)
Q2<-c(1,1,NA,1,NA,1)
Q3<-c(NA,0,0,1,0,1)

mydata<-cbind.data.frame(ID,Month,Number,Color,Q1,Q2,Q3)

#my vector:
Jan.vector<-c('Q1','Q3')

我有(我的数据):

  1. 我想要 select 月份 'Jan'
  2. 的行
  3. 和select列名称'ID'和'Month'
  4. 和 select 向量 'Jan.vector' 中的列名称。我不能列出实际的列名,因为它们会改变。
  5. 我只想要生成的行和列,全部在一个数据集中,如下所示:

我要 (mydata2):

(背景:我的实际数据集有数百列,并且 我将需要 select 列基于每月变化的向量(即 Q1、Q3...)。矢量将是唯一改变的东西。我不知道需要的问题编号,需要依靠矢量 select 问题编号。列顺序也会更改)。

如果我理解正确的话:

> monthNum <- 1
> wantedCol  <-  c('ID','Month','Color','Q1','Q3') 
> mydata[ mydata$Month==substring(month.name[monthNum],1,3),match(wantedCol,names(mydata))]
  ID Month  Color Q1 Q3
1  1   Jan    Red  0 NA
2  2   Jan    Red  1  0
6  6   Jan Purple  1  1

或者 - 您可以通过以下方式说明月份:

> monthName  <-  c('Jan','Mar')
> wantedCol  <-  c('ID','Month','Color','Q1','Q3') 
> mydata[ mydata$Month %in% monthName,match(wantedCol,names(mydata))]
  ID Month  Color Q1 Q3
1  1   Jan    Red  0 NA
2  2   Jan    Red  1  0
3  3   Mar   Blue NA  0
5  5   Mar  Green  0  0
6  6   Jan Purple  1  1

或者您可以按索引说明您的列:

> monthName  <-  c('Jan','Mar')
> wantedCol  <-  c(1,2,4,5,7) 
> mydata[ mydata$Month %in% monthName,wantedCol]
  ID Month  Color Q1 Q3
1  1   Jan    Red  0 NA
2  2   Jan    Red  1  0
3  3   Mar   Blue NA  0
5  5   Mar  Green  0  0
6  6   Jan Purple  1  1

或者如果您总是需要 ID、月份和颜色:

> monthNum <- 1
> wantedColStat  <-  c('ID','Month','Color')
> wantedColDyna  <-  c('Q1','Q3')
> mydata[ mydata$Month==substring(month.name[monthNum],1,3),match(c(wantedColStat,wantedColDyna),names(mydata))]
  ID Month  Color Q1 Q3
1  1   Jan    Red  0 NA
2  2   Jan    Red  1  0
6  6   Jan Purple  1  1