How to create NaN randomly based on specific rate in specific column

9 Ansichten (letzte 30 Tage)
amj
amj am 17 Nov. 2017
Bearbeitet: amj am 17 Nov. 2017
Hi,
I'm going to create NaN values in a data set. I found this basic code, but it is not specify for which column.
X = rand(10,2)
p = randperm(numel(X))
%p1 = randperm(X)
randel = p(1:5)
X(p(1:5)) = NaN
This is my code which is able to set NaN in the second column only: Y = rand(10,2) ratioNan=0.5 Y(rand(size(X(:,1)))<=ratioNan,2)=NaN
This code does not produces the result as expected. For instance, if i want to set the 50% NaN values, sometime it is created more or less than 50% of the records. How to change the code so that i will remove exactly 50% from the record specifically in the second column.

Akzeptierte Antwort

KSSV
KSSV am 17 Nov. 2017
X = rand(10,2) ;
idx = randsample(size(X,1),size(X,1)/2) ;
X(idx,:) = NaN
  1 Kommentar
amj
amj am 17 Nov. 2017
Bearbeitet: amj am 17 Nov. 2017
Dear KSSV,
Thanks a million for your answer. I also just resolved the problem. This is my answer:
x = rand(20,2);
idx = randperm(20);
x(idx(1:5),2) = NaN

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by