【问题标题】:Add NaN rows in matlab table在 matlab 表中添加 NaN 行
【发布时间】:2016-07-10 21:36:25
【问题描述】:

我有一个Table,它是 100 x 19。

Table 的前 16 列包含字符,后 3 列包含双变量。

如何在第 50 行之后插入 3 个由 NaN 组成的新行,以便我的表格变为 103 x 19?

表格是表格

Subject Sex Age .... .... ... .. Var1 Var2 Var3
1       M   38                     88 89   99 
2       F   34  ..... .... .. ...  34 34   34

我想要类似的东西(在这个例子中,我只在第一行和第二行之间添加了 1 行)

Subject Sex Age .... .... ... .. Var1 Var2 Var3
1       M   38                     88 89   99 
1       M   38 ..... .... .. . .   NaN NaN NaN
2       F   34  ..... .... .. ...  34 34   34

【问题讨论】:

    标签: matlab nan


    【解决方案1】:

    您可以使用 nan() 函数创建 NaN 值,然后将它们作为新数据附加到您的表中。您需要新数据是具有相同变量名称的表。我在这里假设它们都是数字的。

    你的情况

    T=[T; array2table(nan(3,8),'variablenames',T.Properties.VariableNames)];
    

    此外,根据@Dan 的 cmets,您似乎也可以这样做

    T{51:53,:} = NaN
    

    同样,如果所有值都是数字类型。

    【讨论】:

    • T(51:53,:) = NaN
    • @ThomasW。如果你插入到中间然后T = [T(1:50,:); nan(3,19); T(51:end,:)]
    • @Dan 确实,我同时删除了我的评论 :)
    • @Dan 我收到了Right hand side of an assignment into a table must be another table or a cell array. 的建议
    【解决方案2】:

    假设所有数据都是数字,那么

    % Create an example table
    >> tbl = table((1:100)',(101:200)');
    % Append rows
    >> tbl{end+1:end+3,:} = nan;
    % Move rows
    >> tbl{53:end,:} = tbl{50:100,:};
    % Insert nans
    >> tbl{50:52,:} = nan;
    

    如果所有数据都不是数字,那就有点难了,但总体思路仍然成立。

    【讨论】:

    • 您好,感谢您的回复。数据好坏参半。即前 16 列是 char 其余的 double
    • @gabboshow 以及如何将 NaN 存储在非数字变量中?从技术上讲,它已经是一个 NaN(不是数字)了!
    • 好吧,我想复制最后一个非数值变量的内容,并将数值替换为 NaN。
    • 如果您将移动行更改为tbl{53:end+3,:} = tbl{50:end,:};,您可以删除附加行行。否则这正是我会做的。
    • @gabboshow 但是......这是另一个问题。使用已经给出的信息很容易解决一个问题。
    猜你喜欢
    • 2021-01-18
    • 2019-08-07
    • 2020-09-20
    • 2014-09-23
    • 2015-11-26
    • 2020-04-24
    • 2023-03-30
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多