How to duplicate certain rows of a dataset (class = dataset)?
이전 댓글 표시
I have a dataset with 200 rows and 20 columns. I want to duplicate each row that has a depth value of 10, e.g. dataset.depth == 10, and place the duplicate row in the next row. (The reason for duplication is because I will change values in 2 of the columns of this duplicated row, but most of the column values will remain the same.) I am thinking that a for loop with an if/else statement could work.
for i=1:length(dataset.depth)
if dataset.depth(i) == 10
DUPLICATE COMMAND HERE NEEDED
end
end
Thanks!
답변 (2개)
No need to use for-loops at all:
B=num2cell(A,2).'; %A is 200x20
B=[B;B];
B(2,dataset.depth~=10)={[]};
newmatrix = vertcat(B{:});
Peter Perkins
2012년 10월 23일
As Matt says, no need to use loops. This might be a little simpler.
First cook up some data:
aa = dataset((1:100)',randi(10,100,1),randn(100,1),'VarNames',{'dpID' 'depth' 'somethingElse'});
Then find the rows to duplicate, and put duplicates at the end:
i = (aa.depth == 10);
Then sort to put duplicates in place:
aa = sortrows([aa; aa(i,:)],'dpID');
Hope this helps.
카테고리
도움말 센터 및 File Exchange에서 Managing Data에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!