How to delete/retain variables (columns) from a table based on sections of the variables name
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
Hello,
Wondering if anyone knows how to delete/retain variables (columns) from a table based on portions of the variables name?
This is a simple example, real data has more than 30000 variables (columns) with combinations of names and other information.
 AA_001_AMER_USA     AA_002_AMER_USA     AA_001_AMER_CAN     BB_001_AMER_USA    BB_002_AMER_CAN
How to delete only variables with name section 'USA'
How to delete only variables with name section '001' & 'USA'
How to retain only variables with name section= 'USA'
How to retain only variables with name section= '001' & 'USA'
Thanks!
댓글 수: 0
채택된 답변
  per isakson
      
      
 2018년 1월 12일
        
      편집: per isakson
      
      
 2018년 1월 12일
  
      One way
%%Sample table   
    tbl = array2table( magic(5) );   
    tbl.Properties.VariableNames =              ...
        { 'A_001_AMER_USA' , 'AA_002_AMER_USA'  ...  
        , 'AA_001_AMER_CAN', 'BB_001_AMER_USA'  ...
        , 'BB_002_AMER_CAN'                     };
How to retain only variables with name section 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^.+_USA$', 'match' );
    T01 = tbl( :, cat(2,cac{:}) );
%%How to retain only variables with name section= '001' & 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^[^_]+_001_[^_]+_USA$', 'match' );
    T02 = tbl( :, cat(2,cac{:}) );
How to delete only variables with name section 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^.+_USA$', 'match' );
    T03 = tbl;
    T03( :, cat(2,cac{:}) ) = [];
%%How to delete only variables with name section '001' & 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^[^_]+_001_[^_]+_USA$', 'match' );
    T04 = tbl;
    T04( :, cat(2,cac{:}) ) = [];
and a variant, which I guess is faster
How to retain only variables with name section 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^.+_USA$' );
    T01 = tbl( :, not( cellfun( @isempty, cac ) ) );
%%How to retain only variables with name section= '001' & 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^[^_]+_001_[^_]+_USA$' );
    T02 = tbl( :, not( cellfun( @isempty, cac ) ) );
How to delete only variables with name section 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^.+_USA$' );
    T03 = tbl( :, cellfun( @isempty, cac ) );
%%How to delete only variables with name section '001' & 'USA'
    cac = regexp( tbl.Properties.VariableNames, '^[^_]+_001_[^_]+_USA$' );
    T04 = tbl( :, cellfun( @isempty, cac ) );
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Workspace Variables and MAT Files에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!