2016-05-16 8 views
0

特定の行の選択方法。特定の列名。特定の列名の別のグループはベクトルに基づいていますか?ベクトルに基づいて行、列、および列の選択

マイデータ:私は月に '月'

  • ある行を選択して、列名を選択したい

    enter image description here

    1. #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') 
      

      私は(MYDATA)を持っています'ID'と 'Month'

    2. そして、t彼は「Jan.vector」をベクトル化する。 I できません実際の列名が変更されるため、一覧表示します。
    3. は私がしたい以下のように1つのデータセットの結果の行と列だけ、すべて:
    4. 私が欲しい

    (mydata2):

    enter image description here

    (背景:私の実際のデータセットは、列の数百を持っています、 と私は月ごとに変化するベクトルに基づいて列を選択する必要があります(Q1、Q3 ...)。ベクトルだけが変更されます。ベクトルを使用して質問番号を選択することができます。列の順序wiまた、変更されます)。

  • 答えて

    1

    私が正しくあなたを理解している場合:

    > 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 
    
    +0

    ありがとうございます! 'wantedCol'ベクターにない追加の列名を選択する方法はありますか?たとえば、ベクトルにはQ1とQ3の列名しか含めることができません。しかし、他の列名(ID、月、色)を名前でリストすることはできますか?あるいは、Q1とQ3はそれ自身のベクトルにありますが、他の列名は別のベクトルにありますか? – Mary

    +0

    確か....私は編集します –

    関連する問題