내 작업 공간 (.mat 파일에서로드 됨)에 많은 대형 데이터 세트 배열이 있습니다.데이터 세트 열을 obsnames로 변환
최소한의 작업 예를 들어 내가 old_ds.Properties.VarNames
를 실행하면 그 이미 표시입니다 (문자열로) 첫 번째 행이 이미 데이터 집합의 헤더입니다이
>> disp(old_ds)
Date firm1 firm2 firm3 firm4
734692 880,0 102,1 32,7 204,2
734695 880,0 102,0 30,9 196,4
734696 880,0 100,0 30,9 200,2
734697 880,0 101,4 30,9 200,2
734698 880,0 100,8 30,9 202,2
같다.
첫 번째 열을 ObsNames로 만드는 쉽고 빠른 방법이 있는지 궁금합니다.
첫 번째 방법으로 데이터 행렬 (예제에서는 2 ~ 5 열), 날짜 벡터를 "내 보낸다"는 생각을하고 행에 이름이있는 새 데이터 집합을 작성했습니다. 은 즉 : 마지막 줄은 다음과 같은 오류를 반환한다는 사실에서 별도로
>> mat = double(old_ds(:,2:5)); % taking the data, making it a matrix array
>> head = old_ds.Properties.VarNames % saving headers
>> head(1,1) = []; % getting rid of 'Date' from head
>> dates = dataset2cell(old_ds(:,1)); % taking dates as column cell array
>> dates(1) = []; % getting rid of 'Date' from dates
>> new_ds = mat2dataset(mat,'VarNames',head,'ObsNames',dates);
...
Error using setobsnames (line 25)
NEWNAMES must be a nonempty string or a cell array of nonempty strings.
Error in dataset (line 377)
a = setobsnames(a,obsnamesArg);
Error in mat2dataset (line 75)
d = dataset(vars{:},args{:});
... 난 다음 함수를 만들어 해결책을 발견 한 것 (예를 내가 가지고있는 22 개의 데이터 집합 배열에 대해 프로세스를 일반화 한 다음 22 번 (각 데이터 집합 배열에 대해 한 번) 함수를 실행합니다. 데이터 집합을 원근감있게 보이게하려면 각 데이터 집합에 7660 개의 행과 2 ~ 1320의 열이 있어야합니다.
데이터 집합을 직접 "먹을"수있는 방법에 대해 알지 못합니다. 첫 번째 열은 ObsNames입니다.
누구든지 내게 힌트를 줄 수 있습니까?
편집 : 첨부 된 sample file.
샘플 파일을 업로드 할 수 있습니까? – Cici
@Cici, 샘플 파일에 링크 (마지막 줄)를 포함하도록 내 질문을 편집했습니다. 당신이 도울 수 있기를 바랍니다. 고맙습니다! – apsql
파일을 열 수 없습니다 ... 저장할 때 -v7.3 태그를 추가해보십시오. – Cici