gpt4 book ai didi

matlab - 如何一次将表列转换为所需的类型?

转载 作者:行者123 更新时间:2023-12-04 10:56:16 24 4
gpt4 key购买 nike

我有这个 csv 文件被读取到 table变量使用 readtable .因此,所有列的类型都是 cell包含字符串值。实际数据类型为double , int32 , datetime , logical , 和 string .我正在逐列转换它们。我想转换相同类型的特定列,或者一次转换所有列。那可能吗?

这是我现在正在做的示例,但我的表有 63 列:

clear variables;
%% simulate readtable
C = {...
'34145823','2015-12-08 00:15:55','3.2','1';
'34157170','2015-12-08 13:29:30','0.5','0';
'34157958','2015-12-08 14:07:00','-1.7','1'};
T = table(C(:, 1), C(:, 2), C(:, 3), C(:, 4), ...
'variablenames', {'int32Col', 'datetimeCol', 'doubleCol', 'logicalCol'});
varfun(@class, T, 'OutputFormat', 'cell')
%% type conversion
T.int32Col = int32(str2double(T.int32Col));
T.datetimeCol = datetime(T.datetimeCol);
T.doubleCol = str2double(T.doubleCol);
T.logicalCol = cell2mat(T.logicalCol) == '1';
varfun(@class, T, 'OutputFormat', 'cell')
T

附注:这些 csv 文件中的所有值都包含在 " 之间s,这就是为什么它们被读取为字符串的原因。

最佳答案

我认为您至少必须指定每列的数据类型,但是一旦完成,switch 语句将让您循环遍历各列,而不必一一遍历。

我介绍 varNames作为每列的名称---我想你可以从你的 csv 文件中得到它。我也介绍了varTypes这是每列的数据类型,我认为你必须手工制作,也许你可以根据你的实际 csv 文件自动化它。

clear variables;
% simulate readtable
C = {...
'34145823','2015-12-08 00:15:55','3.2','1';
'34157170','2015-12-08 13:29:30','0.5','0';
'34157958','2015-12-08 14:07:00','-1.7','1'};
varNames = {'int32Col', 'datetimeCol', 'doubleCol', 'logicalCol'};
T = table(C(:, 1), C(:, 2), C(:, 3), C(:, 4), ...
'variablenames', varNames);

varTypes = {'int32' 'date' 'double' 'logical'};
for i = 1:size(T,2)
switch varTypes{i}
case 'int32'
T.(varNames{i}) = int32(str2double(T{:,i}));
case 'date'
T.(varNames{i}) = datetime(T{:,i});
case 'double'
T.(varNames{i}) = str2double(T{:,i});
case 'logical'
T.(varNames{i}) = logical(cell2mat(T{:,i}));
end
end

关于matlab - 如何一次将表列转换为所需的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59165624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com