给定一个包含列中变量和行中观察值的电子表格,我想有选择地将这些观察值导入MATLAB,其中指定列中的值等于指定的字符串(在本例中为'K'
)。我知道使用循环的可能性,但我的数据集非常大,我更喜欢更快的解决方案(逻辑索引?)。我正在使用表变量。
我非常感谢任何建议。我在网上找到了多个解决方案来处理数组变量,但不能用于表变量。
我的电子表格如下所示:
Variable1 Variable2 Variable3
234789 234678234 'K'
98764 087632167 'V'
87641 492876437 'V'
43789234 123678923 'K'
在此示例中,我只想导入第1行和第4行(不计算标题),因为它们'K'
的值为Variable3
。
我在导入整个数据集后尝试了tableName(tableName(:,3) ~= 'K', :) = []
,但收到了Undefined operator '~=' for input arguments of type 'table'
错误消息。
答案 0 :(得分:0)
好的,可能有更好的答案,但这就是我所知道的。我从来没有能够使用这种逻辑:
tableName(tableName(:,3) ~= 'K', :) = []
即使您在表格和字符(table~ ='K')之间使用正确的逻辑比较,您可能会遇到尝试使用逻辑的问题。
为了在没有循环的情况下执行您想要的操作,我通常会创建一个临时变量,该变量仅包含将确定要保留哪些行的变量列。这是我的意思的一个例子......
data = {1,2,'b';3,4,'c';5,6,'d';7,8,'d'};
%find which rows where the third column is 'd'
temp = data(:,3);%create temporary variable
out = strcmp(temp,'d');%returns logical 1 where strings are the same
index = find(out);%returns the indexes of which rows contain 'd'
data = data(index,:);%now you only have the rows containing 'd'