Import data csv with date/time and other info with setvaropts

조회 수: 48 (최근 30일)
Greg LANGE
Greg LANGE 2022년 9월 10일
댓글: Greg LANGE 2022년 9월 12일
I try to import a csv file into a table int the workspace.
My fist colonn in the csv is date with a time following : day/ month/ year hour minute.
The other collonns are datas that could be considered as double.
The code I am using is :
opts = detectImportOptions('essai_data_3.csv','Delimiter',';')
opts =
DelimitedTextImportOptions with properties: Format Properties: Delimiter: {';'} Whitespace: '\b\t ' LineEnding: {'\n' '\r' '\r\n'} CommentStyle: {} ConsecutiveDelimitersRule: 'split' LeadingDelimitersRule: 'keep' TrailingDelimitersRule: 'ignore' EmptyLineRule: 'skip' Encoding: 'UTF-8' Replacement Properties: MissingRule: 'fill' ImportErrorRule: 'fill' ExtraColumnsRule: 'addvars' Variable Import Properties: Set types by name using setvartype VariableNames: {'Var1', 'Var2', 'Var3' ... and 2 more} VariableTypes: {'datetime', 'double', 'double' ... and 2 more} SelectedVariableNames: {'Var1', 'Var2', 'Var3' ... and 2 more} VariableOptions: Show all 5 VariableOptions Access VariableOptions sub-properties using setvaropts/getvaropts VariableNamingRule: 'modify' Location Properties: DataLines: [1 Inf] VariableNamesLine: 0 RowNamesColumn: 0 VariableUnitsLine: 0 VariableDescriptionsLine: 0 To display a preview of the table, use preview
opts.VariableTypes = {'datetime','double','double','double','double'};
opts = setvaropts(opts,1,'DatetimeFormat','dd.MM.uuuu HH:mm:ss');
opts = setvaropts(opts,2:5,'DecimalSeparator',',');
T = readtable('essai_data_3.csv',opts);
Warning: The DATETIME data was created using format 'MM/dd/uuuu HH:mm' but also matched 'dd/MM/uuuu HH:mm'.
To avoid ambiguity, supply a datetime format using SETVAROPTS, e.g.
opts = setvaropts(opts,varname,'InputFormat','MM/dd/uuuu HH:mm');
T.Properties.VariableNames{1} = 'Time';
T.Properties.VariableNames{2} = 'Data1';
T.Properties.VariableNames{3} = 'Data2';
I tried to read the datasheet of "setvaropts" and use the answears from other questions but i didn't reached what I wanted and I get an error warning as my date format is not recognised because of an "'anbiguity" (PLEASE look at the orange warning)

채택된 답변

Simon Chan
Simon Chan 2022년 9월 10일
Try this:
opts = detectImportOptions('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1121365/essai_data_3.csv','Delimiter',';');
opts.VariableTypes = {'datetime','double','double','double','double'};
opts = setvaropts(opts,1,'InputFormat','dd/MM/uuuu HH:mm');
opts = setvaropts(opts,2:5,'DecimalSeparator',',');
T = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1121365/essai_data_3.csv',opts)
T = 2×5 table
Var1 Var2 Var3 Var4 Var5 ________________ ______ ____ ____ _______ 02/11/2016 17:51 256.45 0 0 0.13021 03/11/2016 17:53 260 1 3 25

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by