2012-12-26 2 views
2

'주식'이라는 주가 데이터 집합이 있습니다. 각 열은 다른 주식입니다. 각 행은 주식 가격의 날짜입니다.데이터 집합 행의 순위 값

주어진 날짜의 주가를 어떻게 평가합니까?

나는
tiedrank(stocks.yhoo) 

을 시도하고 성공적으로 YHOO 주식의 가격을 평가했다. 그러나, 나는 행별로 순위를 정하고 싶습니다. 데이터 집합 배열 첨자는 두 개의 차원해야합니다 : 나는
tiedrank(stocks(1,:)) 

시도 또는 열 1

tiedrank(stocks(1,2:3)) 

나는 오류 메시지를 받았습니다에 날짜 열을 삭제 또한

.

내가 잘못 했나요? 아니면 행렬을 사용하는 것이 더 낫지 않습니까?

+0

당신의 주식 데이터 집합 클래스 구조체의 것 같습니다 : 행에 걸쳐 tiedrank를 사용하려면 double에 데이터 세트의 일부를 변환 한 다음 정렬 출력 색인 목록을 사용해야합니다. 구조체 배열에서 데이터를 추출하는 방법을 읽어야 할 필요가 있습니다. http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-structure-array.html 또는 캐스트 배열에서 셀 배열로 ... – bla

+0

@natan : 구조체는 아니지만 [dataset] (http://www.mathworks.com/help/stats/dataset.html) 배열로 나타납니다. – Jonas

+0

@Jonas, 네가 맞아 미안. 구조체가 var1.field 형식으로 만 사용되는 줄 알았다. 데이터 세트는 언제 발생 했습니까? – bla

답변

1

정확하게 이해하면 주어진 날짜에 가격에 따라 주식을 순위 지정하고, 날짜는 행이며, 주식은 컬럼입니다.

%# create index for sorting 
idx = tiedrank(double(stocks(1,:))); 

%# reorder columns with index 
sortedStocks = stocks(:,idx); 
+0

그 덕분에, 고마워! Matlab은 예상보다 많은 타입 캐스팅을 포함합니다. – Castielle

+0

캐스트는 데이터 세트를 "표준"배열로 변환합니다. 너 오신 것을 환영합니다, btw. – Jonas