How to remove particular data
5 次查看(过去 30 天)
显示 更早的评论
I have the following output
Mek Mek
Lahi Ar
Puni N2
Ar Mek
N2 Mek
Mek Lahi
Lahi Puni
Puni BM2
I have uncommon list:
Ar
N2
BM2
I want to remove the entire row if any of the uncommon list appears in that row. I also want to delete if the first column data and second column data equal in the particulR ROW, and remove the entire row. For example, in first row (first &second column), the data is same (Mek). So, I want to delete the entire row. And, in second row, second column, the data is Ar, because it is in uncommon list, so delete entire row. In fifth row, in first column data is N2, which is included in the uncommon list, so remove entire row. Please kindly help, how to do this. The size of out put data and uncommon list may vary. Many thanks in advance.
2 个评论
采纳的回答
the cyclist
2015-10-1
data = {
'Mek', 'Mek';
'Lahi', 'Ar';
'Puni', 'N2';
'Ar', 'Mek';
'N2', 'Mek';
'Mek', 'Lahi';
'Lahi', 'Puni';
'Puni', 'BM2'};
uncommon = {'Ar','N2','BM2'};
% Remove rows with uncommon
isUncommonElement = ismember(data,uncommon);
rowHasUncommon = any(isUncommonElement,2);
data(rowHasUncommon,:) = [];
% Remove all same
isEqualToFirstElementInRow = strcmp(data,repmat(data(:,1),[1 size(data,2)]));
rowHasAllEqual = all(isEqualToFirstElementInRow,2);
data(rowHasAllEqual,:) = []
5 个评论
the cyclist
2015-10-3
You are not talking about hyphens. Those are single quotes.
This is not very easy. Those quotes are not part of the input. They are just how MATLAB displays strings. I found a post on StackOverflow that explains how to do it. I have pasted an example below.
%// Input
inputArray = {
'a' 'b' 'Fa' 'Fb' 'Xn' 'Fx' 'sign Fa*Fx'
'0.70000' '0.90000' '-0.19592' '0.33887' '0.77327' '0.02896' '-'
'0.70000' '0.77327' '-0.19592' '0.02896' '0.76383' '0.00206' '-'
'0.70000' '0.76383' '-0.19592' '0.00206' '0.76316' '0.00012' '-'
'0.70000' '0.76316' '-0.19592' '0.00012' '0.76312' '0.00000' '-' };
paddedInputArray = strcat(inputArray,{' '}); %// add whitespace
%// Convert to char array
inputCharacterArray = char(paddedInputArray{:})
% Get size parameters
[m,n] = size(paddedInputArray);
p = size(inputCharacterArray,2);
% Create a char array "replica" of input cell array
outputCharacterArray = reshape(permute(reshape(inputCharacterArray.',p,m,[]),[1 3 2]),n*p,m).';
% Display the char array
disp(outputCharacterArray)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Statistics and Machine Learning Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!