【问题标题】:Replace nan with empty in Table with Multiple Data Types在具有多种数据类型的表中将 nan 替换为空
【发布时间】:2017-11-13 23:58:28
【问题描述】:

我正在运行 MATLAB R2016a。我正在处理这样的桌子。它包含多种数据类型。 Fillmissing 函数在 R2016b 版本中运行。我想要实现的是仅在数字数据类型中用空格替换 NaN。目标是在数字列中导出没有 NaN 的 csv。有什么想法吗?

    Var1           Var2             Var3
_____________    _________    _____________________

'2101PV'         'QZ'         6,13               
'2102PV'         'QZ'         6,13               
'2103PV'         'QZ'         NaN                  
'2104PV'         'QZ'         NaN    

【问题讨论】:

  • Var3 是否包含向量元胞数组?
  • 没有。类(mytable.Var3)=双
  • 我编辑了我的帖子。
  • 那你怎么有6,13呢?那只是用逗号显示6.13 吗?另外,应该使用什么替代值来代替NaN,因为NaN 实际上通常用于缺失数值?您要完全删除这些行吗?
  • 6,13 是一个数字。不,我不想用 NaN 删除行。我想用空白单元格替换 NaN

标签: matlab


【解决方案1】:
tab(ismissing(tab)) = {''};

但目前尚不清楚您是如何设法在行中混合数据类型...

【讨论】:

  • 感谢您的回复。但是,正如我提到的,我不想删除带有 nan 值的行。保留它们并用空格替换 NaN
  • 已编辑...这应该可以完成工作...但我仍然无法理解您如何设法混合值类型...除非您使用带有基础数据的元胞数组。
  • 原因是我正在处理具有混合数据类型的 csv 文件,并且某些空白单元格以某种方式填充了 NaN。另外,我不认为 isnan 可以在桌子上工作。它应该转换为数组,但这仅适用于数值数据。
  • 这就是为什么我想知道混合数据类型(NaN 在 char 数组中做什么?)......他们会产生真正的混乱。在聚合 var 或将它们操作到最终状态之前,您应该清理数据。 CSV 文件的detectImportOptions 可能是您最好的盟友。这可能会为您指明正确的方向:mathworks.com/help/matlab/matlab_prog/…
  • 你不能……你不能混合类型。这就是我从一开始就告诉你的。要么将 Var3 转换为字符串,因此也可以为 NaN 分配空字符,或者保留 NaN。没有中点。
猜你喜欢
  • 2015-11-25
  • 2021-12-27
  • 2018-09-24
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多