如何提取行数据根据细胞包含特定单词的文本在Matlab
73(30天)
显示旧的评论
索菲娅
2023年5月27日16:31
你好,
我很坚持一个问题,我想从大Excel文件中提取某些变量分类生物从多个年Excel在MATLAB所以我可以处理它。我想提取所有列从L和数据的行号我需要从657828:1048576。我试过过滤函数在excel中,但它不工作所以我在MATLAB。我多么想过滤器,它包括列j叫什么
object_annotation_hierachy
和精确的物种我想过滤掉以下:
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Calanidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Metridinidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Candaciidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Heterorhabdidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Euchaetidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Metridinidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Cyclopoida_Oithonidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Acartiidae
Arthropoda_Crustacea_Maxillopoda_Copepoda_Calanoida_Temoridae
所有其他物种的变化但我想包括所有数据与桡足类的标题中。
我想进一步提取到的第一列的名称,叫object_id (“cruise2012”) 2016。
到目前为止是这样的代码,但是它不工作:
C = csvread (“cruise_2004_2016_ZooScan_dataset.csv”);
% R657828, C1048576(就在第一行代码用来显示位置)
桡足类包含(C.object_id = = =“cruise2012”)& (C.object_annotation_hierachy“桡足类”);
C1 = C(桡足类:);
任何帮助将是感谢!
5个评论
索菲娅
2023年5月27日在记上17:52
嗨我斜面恐怕这是机密,我改变了一些标题名称的区别。你能帮没有它吗?
布局如下:
列一个cruise2012 (cruise2013变化. .cruise2016)、列B列C(希望数据提取),列D(希望数据提取),情况,然后J(桡足动物物种列名),L(希望数据提取)。
数据的长度是1048576长但我需要数据从657828(我不需要前几年)。
谢谢:)
索菲娅
2023年5月30日在25
我已经上传,将虚拟文字取代,它通常是一个更长时间。我也分裂和numerized表中的分类和代码中有一个更简单的方法去做。因为我有numerized第一和第十行我用这段代码,但似乎仍然不工作。
选择= detectImportOptions (
“Zoocam.xlsx”
);
opts.VariableTypes (2) = {
“双”
};
opts.VariableTypes (19) = {
“双”
};
opts.VariableTypes (20) = {
“双”
};
C = readtable (
“Zoocam.xlsx”
、选择);
C.index = (C。对象= = 2017 & C.object_annotation_hierarchy < 18);
C_new = C (C.index = = 1, {
“对象”
,
“object_lat”
,
“object_lon”
,
“object_annotation_hierarchy”
,
“object_area”
});
writetable (C_new
2017 _data.csv
);
接受的答案
马特·J
2023年5月27日在十九31
编辑:马特·J
2023年5月30日11:16
桡足类=包含(C.object_id,“cruise2012”)&…
包含(C.object_annotation_hierarchy“桡足类”);
14日的评论
索菲娅
2023年5月27日21:22
你好,谢谢你的帮助仍然不工作不同的错误消息当我运行你寄给我的代码行。所有其他代码似乎不错,我得到这个错误当使用csv文件:
错误使用dlmread
无法解析“数字”字段读第一行时,字段1。
实际文本:
“variables_heading_names……”
预期:数字或文字“南”,“正”。(可能签署,不分大小写)
错误csvread(53)行
m = dlmread(文件名,”、“r c);% #好< * DLMRD >
错误在桡足类(1号线)
C = csvread (“DATASET.csv”);
这当我使用excel电子表格:
点索引不支持这种类型的变量。万博1manbetx
错误在桡足类(4号线)
桡足类=包含(C.object_id PELGAS2012) &包含(C.object_annotation_hierachy,桡足类);
任何想法吗?我不是专家在这所以我不能推断出许多可能性
索菲娅
2023年5月28日在七53
感谢马特的帮助。我只是得到一串零在一列,然而我想从行粘贴数据1、3、4、10和12。我已经尝试与其他代码(在那里我更换了所有的excel电子表格1中的桡足类)。
桡足类=包含(C.object_id,“cruise2012”);
[idx] =找到(桡足类(:10)= = 1);
copepodindex =桡足类(:,1,3,4,12);%列
输出= copepodindex (idx);
但这不是工作,任何想法?
沃尔特·罗伯森
2023年5月28日15
csvread()只能用于读取文件,有非数字文本如果文本在领先行根据R参数被忽略,或者主要列中的文本,根据C参数将被跳过。如果你有一个文本列那不是主要列(跳过)然后csvread
不能
甚至通过指定一个RNG处理它。
csvread()过程调用dlmread与逗号分隔符(),和dlmread()过程是调用textscan()格式”(空白格式)并根据R, HeaderLines和无证选项指示多少列跳过。一切不是一个领导跳过行或领导跳过列必须是一个数字。dlmread()不适用RNG直到它读入右下方的数据——如果RNG指定您想要忽略后列包含文本,这将是太迟了,textscan()已经无法读取数据。
C = csvread (“cruise_2004_2016_ZooScan_dataset.csv”);
% R657828, C1048576(就在第一行代码用来显示位置)
桡足类包含(C.object_id = = =“cruise2012”)& (C.object_annotation_hierachy“桡足类”);
csvread()总是返回数值数据,
从来没有
一个结构或对象或表,您可以使用dot-indexing。csvread ()
不
每个指定列创建一个变量。csvread()无法处理列名,
除了
由用户指定一个R抵消这足以跳过列名。
索菲娅
2023年5月28日17:09
由于沃尔特,我现在使用readtable;马特,也没有使其与原有的不是工作的问题我刚刚一串0,甚至没有任何1所以不确定一个比赛,我想打印所有行数据从所有列(但prefentially 1、3、4、10、12) 1和10列我想过滤的词分别“cruise2014”和“桡足类”。它是这样一个简单但是我似乎不能绕过! !
马特·J
2023年5月30日在十一17
编辑:马特·J
2023年5月30日11:19
这似乎工作。
文件名=“small_data.xlsx”;
选择= detectImportOptions(文件名,“ExpectedNumVariables”13);
opts.VariableTypes ([10]) = {“字符串”};
C = readtable(文件名,选择);
警告:列标题从文件被修改,使之有效MATLAB标识符表在创建变量名之前。最初的列标题保存在VariableDescriptions属性。
设置“VariableNamingRule”“保存”使用原始的列标题,表变量名。
设置“VariableNamingRule”“保存”使用原始的列标题,表变量名。
桡足类=包含(C.object_id,“cruise2012”)&…
包含(C.object_annotation_hierarchy“桡足类”);
:C_new = C(桡足类)
C_new =5×13表
object_id
objid
object_lat
object_lon
object_date
object_time
object_depth_min
object_depth_max
object_annotation_category
object_annotation_hierarchy
classif_id
object__item
object_area
_______
__________
__________
__________
___________
___________
___________
___________
__________________________
________________________________________________________________________________________________________________
__________
_______
___________“cruise2012”4.1535 e + 08年47岁-4.3383 - 2.009 e + 07年16101 20 100.1{哲水蚤的}“活>真核生物> Opisthokonta > Holozoa >后生动物> >节肢动物甲壳纲动物> Maxillopoda >桡足类>哲水蚤> Euchaetidae”45074年23 1479年“cruise2012”4.1535 e + 08年47岁-4.3383 - 2.009 e + 07年16101 20 100.1{哲水蚤的}“活>真核生物> Opisthokonta > Holozoa >后生动物> >节肢动物甲壳纲动物> Maxillopoda >桡足类>哲水蚤> Metridinidae”45074年23 1479年“cruise2012”4.1535 e + 08年47岁-4.3383 - 2.009 e + 07年16101 20 100.1{哲水蚤的}“活>真核生物> Opisthokonta > Holozoa >后生动物> >节肢动物甲壳纲动物> Maxillopoda >桡足类>剑水蚤目> Oithonidae”45074年23 1479年“cruise2012”4.1535 e + 08年47岁-4.3383 - 2.009 e + 07年16101 20 100.1{哲水蚤的}“活>真核生物> Opisthokonta > Holozoa >后生动物> >节肢动物甲壳纲动物> Maxillopoda >桡足类>哲水蚤> Acartiidae”45074年23 1479年“cruise2012”4.1535 e + 08年47岁-4.3383 - 2.009 e + 07年16101 20 100.1{哲水蚤的}“活>真核生物> Opisthokonta > Holozoa >后生动物> >节肢动物甲壳纲动物> Maxillopoda >桡足类>哲水蚤> Temoridae”45074年23日1479年
马特·J
2023年5月30日20:01
你介意解释你在哪里得到的值opts.VariableTypes([1, 10]) ={'字符串'};
我们希望第一和第十列字符串,因为这些都是我们给的有()。
索菲娅
2023年5月30日21:54
是的我刚意识到,非常漫长的一天完全忘记,谢谢;似乎不会停止跑步也许因为那是因为真正的文件太大(约700 000行),这会显著减缓matlab和maybemake运行一个问题吗?我想要提取的数据是大约100 000行。非常感谢你的奉献精神来帮助我解决一下这个问题:)
沃尔特·罗伯森
2023年5月31日早上1。38分到来
有时
你可以获得更好的性能和代码的
mask1 =找到(包含(C.object_id = =“cruise2012”));
mask2 =包含(C.object_annotation_hierachy (mask1),“桡足类”);
matching_rows = mask1 (mask2);
索菲娅
2023年5月31日在7:02
非常感谢马特,它最终工作当我离开这一夜!由于沃尔特,我可以开始需要有人来改善efficiecny,然而我得到:
错误使用包含
没有足够的输入参数。
错误test5(12)行
mask1 =找到(包含(C.object_id = = " cruise2012 "));
当我运行:
文件名=“small_data.xlsx”;
选择= detectImportOptions(文件名,“ExpectedNumVariables”13);
opts.VariableTypes ([10]) = {“字符串”};
C = readtable(文件名,选择);
mask1 =找到(包含(C.object_id = =“cruise2012”));
mask2 =包含(C.object_annotation_hierarchy (mask1),“桡足类”);
matching_rows = mask1 (mask2);
C_new = C (matching_rows:);
任何想法为什么?
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。