How to assing incrementing numbers to identical values in a column?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello to all,
my ultimate goal of this question is to find a solution for the following problem: I am searching for the index of the first and last day of a month of one year specifically. To specify my question here a design of my data :
Column 1(Year) Column 2(Month) Column 3(Data)
1990 1 .098
1990 1 .99
1990 1 .34
1990 2 .56
1990 2 .44
In this example my answer would be IndexBeginning = 1 and IndexEnding= 3 for month 1 of the year 1990 and IndexBeginning = 4 and IndexEnding= 5 for month 2 of the year 1990.
To get specific values for a month and the respective years i have already merged the two first columns. January 1990, e.g., now has the designated number 19901 and February 1995 the number 19952. Now I´m trying to index those merged numbers from 1 to 293 ( number of month of my sample) in correct order so i can easily search for every month.
I´m very grateful for any and every idea!
with Kind Regards,
A Goeh
댓글 수: 0
채택된 답변
Azzi Abdelmalek
2016년 8월 22일
편집: Azzi Abdelmalek
2016년 8월 22일
M=[1990 1 .098;1990 1 .99;1990 1 .34;1990 2 .56;1990 2 .44]
[ii,jj,kk]=unique(M(:,1:2),'rows','stable')
out=[ii cell2mat(accumarray(kk,(1:numel(kk))',[],@(x) {[x(1) x(end)]}))]
추가 답변 (1개)
Andrei Bobrov
2016년 8월 22일
편집: Andrei Bobrov
2016년 8월 22일
M = [1990 1 .098;1990 1 .99;1990 1 .34;1990 2 .56;1990 2 .44];
[ii,jj] = unique(M(:,1:2),'rows','first');
[~,kk] = unique(M(:,1:2),'rows','last');
out = [ii,jj,kk];
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!