How so subset observations in a matrix?

조회 수: 4(최근 30일)
Prerna Mishra
Prerna Mishra 2022년 7월 25일
답변: KSSV 2022년 7월 25일
I have a matrix that has the follwing columns:
[GVKEY FYEAR SALE ASSET]
FYEAR ranges from 2005-2019 and there are many GVKEYs which are basically identifiers. I want to keep only those GVKEYS(observations) for which I have the entire 2005-2019 observations, as some may have only sub ranges like 2007-2009.
How do I do this?

채택된 답변

Githin George
Githin George 2022년 7월 25일
편집: Githin George 2022년 7월 25일
Hi Prerna,
My understanding is that you want to filter out the rows of a matrix for those GVKEYs having observations from 2005-2019. I would like to make the assumption that the year range is continuous. You could try out the following piece of code.
keys = unique(data(:,1))
for i=1:numel(keys)
keyData = data(data==keys(i),:)
% from here you can compare with keyData length or compare the year
% array to the 2nd column and based on that modify values in the actual
% data array.
col2 = sort(keyData(:,2))
flag = isequal(col2,2005:2019)
if(flag == 0)
data(data==keys(i),:) = []
end
end
I Hope this helps.
  댓글 수: 7
Prerna Mishra
Prerna Mishra 2022년 7월 25일
A follow up, if i want to filter rows where column 7 begins with 31, how would I do that?

댓글을 달려면 로그인하십시오.

추가 답변(1개)

KSSV
KSSV 2022년 7월 25일
idx = FYEAR >= 2007 & FYEAR <= 2009 ;
iwant_FYEAR = FYEAR(idx) ;
iwant_GVKEYS = GVKEYS(idx) ;

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by