Replace NaN values with median for each row

2 ビュー (過去 30 日間)
gcicceri
gcicceri 2020 年 7 月 9 日
コメント済み: gcicceri 2020 年 7 月 9 日
Hi guys,
I have this table:
Date var_1 var_2 var_3 var_4 var_5 var_6
01-01-90 0.2 0.34 0.43 0.12 0.18 0.1
01-01-91 0.3 0.54 0.53 0.62 0.38 0.2
01-01-92 0.7 0.40 0.77 0.42 NaN 0.2
01-01-93 0.7 0.40 0.77 0.42 NaN 0.2
How do I replace the NaN values in the table with the median of the row for each row?
The result for this table should be:
Date var_1 var_2 var_3 var_4 var_5 var_6
01-01-90 0.2 0.34 0.43 0.12 0.18 0.1
01-01-91 0.3 0.54 0.53 0.62 0.38 0.2
01-01-92 0.7 0.40 0.77 0.42 Med_Row 0.2
01-01-93 0.7 0.40 0.77 0.42 Med_Row 0.2
  1 件のコメント
KSSV
KSSV 2020 年 7 月 9 日
Read about fillmissing

サインインしてコメントする。

採用された回答

madhan ravi
madhan ravi 2020 年 7 月 9 日
編集済み: madhan ravi 2020 年 7 月 9 日
m = TablE{:,2:end};
ix = any(isnan(m),2);
mix = m(ix,:);
m1 = median(m(ix,:),2,'omitnan') .* isnan(m(ix,:))
m1(m1==0) = mix(~isnan(mix));
m(ix,:) = m1
TablE{:,2:end} = m
  5 件のコメント
madhan ravi
madhan ravi 2020 年 7 月 9 日
編集済み: madhan ravi 2020 年 7 月 9 日
1) converting table to a matrix
2) detecting which rows of matrix has nans in it
3) saving those twos of matrix in a variable called mix
4) calculating median for those rows and assigning it to the matrix where nana occurs
5) copying the values other than nan
6) replacing those rows to the original matrix
7) converting it back to a table
gcicceri
gcicceri 2020 年 7 月 9 日
Perfect. thanks

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeNaNs についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by