Проблемы с импортом csv-данных в MATLAB - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь прочитать в csv-файле, который содержит ежедневные данные по курсам евро / доллар, включая даты, указывающие год, месяц и день.Проблема в том, что использование readtable (filename) помещает одинарные кавычки вокруг всех записей таблицы и, следовательно, мешает мне вообще использовать данные.

Определить параметры импорта:

opts = detectImportOptions('EUR_USD Historische Data.csv');

Считать данные:

EUR_USD = readtable('EUR_USD Historische Data.csv');

Вывести даты и преобразовать в переменную datetime:

dt = EUR_USD(:,1);
dates = datetime(dt,'InputFormat','yyyyMMdd'); 
% Does not work because of single quotes

Мне удалось вычесть цены закрытия и сделать их работоспособными, но я не уверен, что это элегантный способ сделать это:

closing_prices = str2double(table2array(EUR_USD(:,5)));

В конечном итоге цель состоит в том, чтобы сделать данные работоспособными.Мне нужно сравнить два столбца с переменными datetime, и если даты не совпадают между двумя столбцами, мне нужно удалить эту запись так, чтобы в конце совпадали оба столбца.

Это вектор с датами: Неправильный вектор дат

Мне нужно, чтобы он выглядел так: Правильный вектор дат

1 Ответ

0 голосов
/ 11 апреля 2019

Я думаю, все, что вам нужно сделать, это удалить символ ', чтобы правильно прочитать данные в datetime.Посмотрите на следующий пример:

%stringz is the same as dt here: just the string data
T = table;
T.stringz = string(['''string1'''; '''string2'''; '''string3''']);
stringz = T.stringz;

%Run the for loop to remove the ' chars
for i = 1:length(stringz)
    strval = char(stringz(i,1));
    strval = strval(2:end-1);
    strmat(i,1) = string(strval);
end

%Then load data into datetime after this for loop
dates = datetime(strmat,'InputFormat','yyyyMMdd'); 

strmat возвращает массив строк 3x1 без символов ' на внешней стороне строки.

...