![如何在 excel 或 matlab 中处理科学数字?](https://linux22.com/image/1379088/%E5%A6%82%E4%BD%95%E5%9C%A8%20excel%20%E6%88%96%20matlab%20%E4%B8%AD%E5%A4%84%E7%90%86%E7%A7%91%E5%AD%A6%E6%95%B0%E5%AD%97%EF%BC%9F.png)
我已将文本文件导入 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
答案1
这是一个 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
,这样您就不会覆盖长度之类的函数。
答案2
Excel 中的 VALUE 函数会将文本格式的科学计数法转换为存储的数字值。例如,如果单元格 A1 中有文本“4.879E-16”,则可以使用:
=VALUE(A1)
获取值:
0.0000000000000004879