replace values by the previous value

Hi, I had to change values (below 60) in column 11 to the mean of a colomn 11. This worked (with the function below), but now I need to change values below 60 in colomn 11 to the previous value in column 11. I tried to figure it out by means of previous posts, but I can't make it work. Thanks!
>> lId = data(:,11) <= 60 ; data( data(:,11)<=60, 11 ) = mean(data(:,11));

Answers (1)

Not quite sure if I understand what you are trying to do, but how about
data = 10*rand(5)
old = data(data(:,1)<=6,1)
data(data(:,1)<=6,1) = mean(data(:,1))
data(data(:,1)<=6,1) = old
I worked with a smaller size array and other numbers just to demonstrate.

3 Comments

Thank you, I clearly did not explain well. What I need to do is to change values below 60 in a certain column to the previous value in that column. So I need to replace = mean(data(:,11)); with a function that can do this. I tried things such as = data (data(:,11)<=60)-1, but I cannot manage to capture the previous value.
What do you mean by previous? Same column, row above? Let's say you have a matrix
A = [1 2 3 4;...
5 6 7 8;...
9 10 11 12]
and had to replace all values below 10 in column 3.
yes row above in same column. In your example it would not be the right value since 3 cannot be changed by the previous value (which should be higher than 10). so if the matrix would be
A = [9 10 11 12;...
8 7 6 5;...
4 3 2 1]
6 would have to become 11 and 2 would have to become 11

Sign in to comment.

Categories

Find more on Surfaces, Volumes, and Polygons in Help Center and File Exchange

Asked:

on 11 Oct 2017

Edited:

on 11 Oct 2017

Community Treasure Hunt

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

Start Hunting!