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

48 次查看(过去 30 天)
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 个)

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by