How to duplicate certain rows of a dataset (class = dataset)?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
José-Luis
el 17 de Oct. de 2012
Editada: José-Luis
el 18 de Oct. de 2012
I don't really understand how your data is organized. As I understand it, you have an array of structures and one of the fields is depth. In that case what do you mean by repeating rows? Or is the depth one of the columns in your matrix?
Respuestas (2)
Peter Perkins
el 23 de Oct. de 2012
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.
0 comentarios
Ver también
Categorías
Más información sobre Data Types en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!