Я импортировал текстовый файл в Excel. Файл имеет числовые и текстовые столбцы. В числовом столбце есть несколько научных номеров, которые представлены только в текстовом формате. Когда я импортирую файл Excel в Matlab, я сталкиваюсь с проблемой научных чисел, которая говорит, что это не числа! Как я могу справиться с этими числами? Почему это возникло?

Файл был в начале результатом одной программы секвенирования. Затем я добавил суффикс txt, чтобы изменить его в текстовый формат. И, наконец, я открыл его в Microsoft Excel и сохранил в формате xlsx. Вот как выглядит одна строка моего файла на листе Excel:

ENSMUSG00000078645  -   -   ENSMUSG00000078645  Fam63a  TSS68162    3:95085766-95088779 -   -   **6.41727e-317**    0   0.309616    OK

жирный номер является одним из этих научных номеров.

Вот некоторая часть исходного текстового файла:

tracking_id class_code  nearest_ref_id  gene_id gene_short_name tss_id  locus   length  coverage    FPKM    FPKM_conf_lo    FPKM_conf_hi    FPKM_status

ENSMUSG00000088390  -   -   ENSMUSG00000088390  U7  TSS3702 1:3668960-3669024   -   -   0   0   0   OK

2 ответа2

1

Функция VALUE в Excel преобразует научную запись в текстовом формате в сохраненное числовое значение. Например, если у вас есть текст «4.879E-16» в ячейке A1, вы можете использовать:

=VALUE(A1)

Чтобы получить значение:

0.0000000000000004879
0

Вот скрипт Matlab, который импортирует данные вашего примера в cellarray, а затем копирует их содержимое в переменные, названные в соответствии с вашими заголовками.

fid  = fopen('tst.tst');
data = textscan(fid,'%s %s %s %s %s %s %s %s %s %d %d %d %s','HeaderLines',2);
fclose(fid)

mytracking_id         = data{1};
myclass_code          = data{2};
mynearest_ref_id      = data{3};
mygene_id             = data{4};
mygene_short_name     = data{5};
mytss_id              = data{6};
mylocus               = data{7};
mylength              = data{8};
mycoverage            = data{9};
myFPKM                = data{10};
myFPKM_conf_lo        = data{11};
myFPKM_conf_hi        = data{12};
myFPKM_status         = data{13};
clear data

Столбцы, прочитанные с %d , станут векторами целых чисел (используйте %g для чисел с плавающей запятой). Столбцы, прочитанные с помощью %s представляют собой строковые массивы ячеек, и вам, вероятно, потребуется их дальнейшая обработка.

Я решил использовать префикс my , чтобы вы не переопределяли такие функции, как length.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .