2014-01-06 4 views
0

다른 연령대에 따라 데이터 집합을 분류해야합니다. 분류는 성별이 남성인지 여성인지에 따라 다릅니다. 먼저 성별로 데이터를 서브 세트 한 다음 서수 함수를 사용합니다 (데이터 세트는 Matlab 예제에서 나온 것입니다).여러 그룹으로 서수 배열 만들기

load hospital; 
subset_m=hospital(hospital.Sex=='Male',:); 
subset_f=hospital(hospital.Sex=='Female',:); 

edges_f=[0 20 max(subset_f.Age)]; 
edges_m=[0 30 max(subset_m.Age)]; 

labels_m = {'0-19','20+'}; 
labels_f = {'0-29','30+'}; 

subset_m.AgeGroup= ordinal(subset_m.Age,labels_m,[],edges_m); 
subset_f.AgeGroup = ordinal(subset_f.Age,labels_f,[],edges_f); 

vertcat(subset_m,subset_f); 

오류를 VERTCAT를 사용하여 데이터 집합 변수 '연령 집단'을 연결할 수 없습니다 세트/vertcat (라인 76) 를 사용 : 나는 수직 부분 집합을 연결하려고하면 다음 코드는 마지막 줄에 충돌합니다. 동일해야 서수/vertcat (라인 36) 서수 수준과 그 순서를 사용하여 오류 :

는에 의해 발생.

답변

0

편집

이 여기에 중요한 부분이 문제에서 누락 된 것으로 보인다 수정 된 질문에 대한 대답입니다. 당신은 예를 들어 join보다는 vertcat을 사용할 필요가 : 원래 문제의

joinFull = join(subset_f,subset_m,'LeftKeys','LastName','RightKeys','LastName','type','rightouter','mergekeys',true) 

솔루션을 실제로 잘못된 변수와 함께 작동하도록 노력하고있다처럼

것 같다. hospitalCopy의 모든 인스턴스를 hospital으로 변경하면 모든 것이 올바르게 작동합니다.

아마도 병원을 복사하고 편집하여 입력의 유효성을 잃었을 수 있습니다. hospitalCopy이 정말로 필요한 경우 load hospital 이후에 직접 할당해야합니다.

이 방법이 도움이되지 않는다면 코드를 실행하기 전에 clear all을 사용하고 현재 디렉토리에 'hospital'이라는 파일이 없는지 확인하십시오.

+0

감사합니다. 위의 수정 사항을 참조하십시오. 문제가되는 데이터 세트의 이름이 아니며 여러 종류의 서수 카테고리가있는 데이터 세트의 수직 연결과 관련이 있습니다. – Sassafras

+0

@SASnewby 이제 새로운 질문에 답해야합니다! –

+0

감사하지만 _right 및 _left에 대한 불필요한 필드가 많이 생성됩니다. 이것을 피할 수있는 방법이 있습니까? – Sassafras