Assign NaN to specific rows(based on criteria) for multiple table variables
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marcel345614
el 1 de Feb. de 2022
Comentada: Marcel345614
el 2 de Feb. de 2022
I want to assign NaN to (time-)table rows that match a criteria (T.Var1~=1). I would like to do this for specific variables in the table.
But instead of doing
T.Var2(T.Var1~=1)=NaN; % Note: My variables are not called Var1, Var2, ... but I simplified it here to these names ;-)
T.Var5(T.Var1~=1)=NaN;
%...
T.Var10(T.Var1~=1)=NaN;
%...
I would like to do this in a shorter code. Is this possible?
I look for something like this:
T.{'Var2','Var5', 'Var7', 'Var10'}(T.Var1~=1)=NaN;
0 comentarios
Respuesta aceptada
Turlough Hughes
el 1 de Feb. de 2022
You can do that as follows:
% Firstly some sample data
T = array2timetable(randi(3,10,5),'Rowtimes',datetime() + seconds(0:9))
% You can do it using column numbers
T{T.Var1==1,[2 4]} = nan
% or using variable names
T{T.Var1==1,["Var3", "Var5"]} = nan
3 comentarios
Turlough Hughes
el 1 de Feb. de 2022
No problem. The single quotes are type char and the double quotes are type string. You can see why Var1Var3Var5 came up just by typing it into the command window:
idx = ['Var1' 'Var3' 'Var5']
whereas when you concatenate strings the result is different:
idx = ["Var1" "Var3" "Var5"]
You could also use a cell array of char's to index by the variable names:
T = array2timetable(randi(3,10,5),'Rowtimes',datetime() + seconds(0:9));
T{T.Var1==1,{'Var3', 'Var5'}} = nan
Más respuestas (1)
Benjamin Thompson
el 1 de Feb. de 2022
If you are assigning from a scalar it seems you must do this column by column. Use an index vector to select which rows to assign:
T.Var1 = [1 2 3 4 1]'
T.Var2 = 2*ones(5,1)
T.Var3 = 5*ones(5,1)
T.Var4 = 10*ones(5,1)
I = T.Var1 ~= 1
T2.Var2(I) = NaN
T2.Var3(I) = NaN
T2.Var4(I) = NaN
See the MATLAB help article "Access Data in Tables" for more data reading and writing examples.
Ver también
Categorías
Más información sobre Tables 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!