을 table
사용하여 변수 로 읽은이 csv 파일이 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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다