2016-07-04 2 views
1

문제가 생겼습니다. 컬럼 2 내지 4는 문자열을 포함하는 반면,도 1 및도 5는 숫자 값을 포함Matlab에서 큰 데이터 세트 구성

'Year' 'Country' 'X' 'Y' 'Value'

열 :

I는 다음과 같은 구조를 갖는다 매트랩 큰 데이터 세트 (200,000 × 5 셀)을 가져왔다.

나는 다음과 같은 구조 것이다 변수로이 모든 정보를 정리하고 싶은

:

NewVariable{Country_1 : Country_n , Year_1 : Year_n}(Y_1 : Y_n , X_1 : X_n)

내가 생각할 수있는 모든이의 이름과 일치하는 항목을 찾을 수있는 전체 데이터 집합을 반복하는 것입니다 Country, Year, XY 변수는 ifstrcmp 함수를 결합하지만 이것은 내가하려는 일을 달성하는 데 가장 비효율적 인 방법 인 것으로 보입니다.

아무도 도와 줄 수 있습니까?

미리 감사드립니다. 코멘트에서 언급 한 바와 같이

+1

기능을 먼저 쓰고 나중에 최적화하는 것에 대해 걱정하지 마십시오. – excaza

+0

힌트를 제공해 주셔서 감사합니다. 요점은 아마도 그렇게하는 데 사용할 수있는 기능이 없다는 것입니다. 그렇지 않으면 구체적인 값을 추출 할 때마다 전체 데이터 세트를 반복해야합니다. 예를 들어 200000 개의 레코드 대신 5 백만개가 있으면 실제 대안이 아닙니다. – aulky11

+1

아!() – Finn

답변

1

당신이 범주 배열을 사용할 수 있습니다

% some arbitrary data: 
country = repmat('ca',10,1); 
country = [country; repmat('cb',10,1)]; 
country = [country; repmat('cc',10,1)]; 
T = table(repmat((2001:2005)',6,1),cellstr(country),... 
    cellstr(repmat(['x1'; 'x2'; 'x3'],10,1)),... 
    cellstr(repmat(['y1'; 'y2'; 'y3'],10,1)),... 
    randperm(30)','VariableNames',{'Year','Country','X','Y','Value'}); 
% convert all non-number data to categorical arrays: 
T.Country = categorical(T.Country); 
T.X = categorical(T.X); 
T.Y = categorical(T.Y); 
% here is an example for using categorical array: 
newVar = T(T.Country=='cb' & T.Year==2004,:); 

table 클래스는 같은 것을 만들어, 매우 편리합니다. 마지막 라인 T.Country=='cb' & T.Year==2004에있는 논리 문장을 확장하여 필요에 맞게 수정하십시오. 이게 도움이되는지 내게 말해주십시오.)

+0

유용한 응답을 주셔서 감사합니다, @ EBay! 데이터를 테이블로 가져오고 범주 형 함수를 사용하면 정확히 필요한 것입니다. :-) – aulky11