Replace stale / repeating data with NaN in a table
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have data in a time table with around 10 variables. occasionally the data source "stalls out" and just keeps outputting the last value instead of fresh data in a particular column. The timestamp and some columns will update correctly. What I want to do is replace the stale / repeated values with NaN. I can't just remove the row as I need the other columns. When the data is good there would never be a case where the same value repeats twice or more in a row.
example input
data.Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ]
desired output
data.Var1 = [ 3 , 2, 5, 4, NaN , NaN, NaN, 6, 2, 3 , 5, NaN , NaN ,NaN ]
I saw something in a previous post (https://www.mathworks.com/matlabcentral/answers/216921-need-to-remove-repeated-adjacent-elements-in-an-array?s_tid=srchtitle ) that could work but I'm struggling to modify it for my needs as it removes values, once I put in NaN the test doesnt know where the last good value was.
I'd consider upgrading if theres a function in a newer version or toolbox.
0 commentaires
Réponse acceptée
KSSV
le 24 Sep 2021
Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ] ;
% Var1 = [ 3 , 2, 5, 4, NaN , NaN, NaN, 6, 2, 3 , 5, NaN , NaN ,NaN ]
idx = find(diff(Var1)==0)+1 ;
Var1(idx) = NaN
1 commentaire
Markus Niemelä
le 21 Mar 2022
Hi!
I was wondering, how to do this exact thing, but for multiple columns?
For example: Let's say I have matrix:
1 2 3 4
2 3 4 4
3 1 3 1
3 1 3 2
And the desired output would then be:
1 2 3 4
2 3 4 NaN
3 1 3 1
NaN NaN NaN 2
I hope this makes sense,
Kr, Markus
Plus de réponses (1)
Mohammad Sami
le 24 Sep 2021
You can try this.
Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ];
i = Var1(2:end) == Var1(1:end-1);
i = [false i];
Var1(i) = NaN
0 commentaires
Voir également
Catégories
En savoir plus sur Logical 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!