Go through the table with a loop and change values

21 vues (au cours des 30 derniers jours)
Megan
Megan le 12 Fév 2020
Modifié(e) : Megan le 19 Fév 2020
I have 30 columns and there are values in these columns.
  2 commentaires
BN
BN le 12 Fév 2020
Modifié(e) : BN le 12 Fév 2020
Hello, Do you want to replace -9 to NaN across your table? I mean You want to change every -9 in your table to NaN?
Megan
Megan le 12 Fév 2020
yes

Connectez-vous pour commenter.

Réponses (3)

Subhadeep Koley
Subhadeep Koley le 12 Fév 2020
Modifié(e) : Subhadeep Koley le 12 Fév 2020
ds = record ("xlsfile", "dataset.csv");
data = dataset2table(ds);
[rows, cols] = size(data);
newData = data;
for i = 1: rows
for j = 1: cols
if table2array(data(i, j)) == -9
newData(i, j) = array2table(NaN);
end
end
end
  7 commentaires
Megan
Megan le 12 Fév 2020
the empty rows are coded automatically as NaN in Matlab.
In my Questionnare -9 also means Error so, I want to change -9 into NaN
Subhadeep Koley
Subhadeep Koley le 12 Fév 2020
Your "dataset.csv" is encoded with UTF-16-LE, which is not fully supported by the function readtable. Therefore, I copied and pasted all the data in a new .xlsx file (attached here).
The below code might be helpful now although it is not a very efficient solution.
clc;
data = readtable('Book1.xlsx');
[rows, cols] = size(data);
newData = data;
for i = 1: rows
for j = 1: cols
temp = table2array(data(i, j));
if iscell(temp)
temp = cell2mat(temp);
end
if temp == -9
newData(i, j) = array2table(NaN);
end
end
end

Connectez-vous pour commenter.


Steven Lord
Steven Lord le 12 Fév 2020
The standardizeMissing function can accept arrays of various types, including table arrays and timetable arrays. If you only want to standardize the form in which missing data is stored for certain variables in your table you can tell it to only operate on specific 'DataVariables' as well.

BN
BN le 12 Fév 2020
Modifié(e) : BN le 12 Fév 2020
I think you won't need to use for loop. If A is the name of the table, then you can just use:
A= readtable('dataset.csv');
A{:,:}(A{:,:}==-9) = NaN
  9 commentaires
BN
BN le 12 Fév 2020
Oh yes I'm sorry I had a typo, use this:
A= readtable('dataset.csv');
A2 = table2array(A);
A2(A2==-9) = NaN;
Megan
Megan le 12 Fév 2020
No, it did not work :(
Undefined operator '==' for input arguments of type 'cell'.
Error in analysis (line 25)
A2(A2==-9) = NaN;

Connectez-vous pour commenter.

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by