MATLAB - 按基础数据类型将表拆分为单个列数组?

时间:2017-02-26 06:22:47

标签: matlab

在示例中:

load hospital
T = dataset2table(hospital)

我转换成了一张桌子,因为我觉得可能更容易使用。但是,如果答案中的方法适用于数据集或表格,我真的不在乎。我想获取每一列,因此" LastName"," Sex"等获取其基础数据类型,并为每个列创建一个新变量。有没有办法在不迭代表(即内置函数)的情况下完成此操作?至少如果我不能转换为其基础类型,我可以将它们分成单个单元格数组吗?

最终结果将在工作空间中包含变量:

姓氏

年龄

重量

吸烟者

血压

试验

2 个答案:

答案 0 :(得分:0)

我认为功能findgroups和/或splitapply可能对您有帮助!

这是一个链接,您可以在其中查看它们的工作原理:

https://www.mathworks.com/help/matlab/matlab_prog/split-table-data-variables-and-apply-functions.html

答案 1 :(得分:0)

使用表格,如果您想自动生成变量LastNameSexAge等,您可以:

  • 获取变量的名称:它们存储在表的Properties.VariableNames属性中
  • 然后将它们编号为可变列表的长度
  • 遍历表格列(变量)以访问数据

现在的问题在于创建用于在工作空间中存储数据的单个变量的名称。

您可以通过将数据存储在允许动态生成字段名称的struct中来解决此问题。

因此,您可以在表格中的变量名称之后生成字段的名称。

拟议方法的可能实施方法是:

% Load the data
load hospital
% Convert dataset to table
T = dataset2table(hospital)
% Get the name of the varaibles
var_names=T.Properties.VariableNames
% Identify the number of varaibles (to be used in the next loop)
n_var=length(var_names)
% Store the data in a struct
% Get the name of the rows
hospital_data.row_names=T.Properties.RowNames;
% Loop over the variables
% Create dynamically the names of the fields of the struct after the name
% of the variables
for i=1:n_var
   hospital_data.(var_names{i})=T{:,i}
end

这会生成名为struct的{​​{1}},其字段为:

hospital_data

希望这有帮助,

Qapla'