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')
我有(我的数据):
- 我想要 select 月份 'Jan'
的行
- 和select列名称'ID'和'Month'
- 和 select 向量 'Jan.vector' 中的列名称。我不能列出实际的列名,因为它们会改变。
- 我只想要生成的行和列,全部在一个数据集中,如下所示:
我要 (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
如何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')
我有(我的数据):
- 我想要 select 月份 'Jan' 的行
- 和select列名称'ID'和'Month'
- 和 select 向量 'Jan.vector' 中的列名称。我不能列出实际的列名,因为它们会改变。
- 我只想要生成的行和列,全部在一个数据集中,如下所示:
我要 (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