String 在MATLAB中将数据集上的字符串特征值转换为数值
我有一个类似的数据集String 在MATLAB中将数据集上的字符串特征值转换为数值,string,matlab,dataset,String,Matlab,Dataset,我有一个类似的数据集 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3.0,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor 6.3,3.3,6.0,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3.0,5.9,2.1,Iris-virginica 我想把数据集中的字符串值转换成整数
5.7,2.9,4.2,1.3,Iris-versicolor
6.2,2.9,4.3,1.3,Iris-versicolor
5.1,2.5,3.0,1.1,Iris-versicolor
5.7,2.8,4.1,1.3,Iris-versicolor
6.3,3.3,6.0,2.5,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
7.1,3.0,5.9,2.1,Iris-virginica
我想把数据集中的字符串值转换成整数值,比如
5.7,2.9,4.2,1.3,0
6.2,2.9,4.3,1.3,0
5.1,2.5,3.0,1.1,0
5.7,2.8,4.1,1.3,0
6.3,3.3,6.0,2.5,1
5.8,2.7,5.1,1.9,1
7.1,3.0,5.9,2.1,1
所以Iris versicolor变为0,Iris versicolor变为1
如果您的数据是在单元格数组中,例如
data = {...
5.7,2.9,4.2,1.3,'Iris-versicolor'
6.2,2.9,4.3,1.3,'Iris-versicolor'
5.1,2.5,3.0,1.1,'Iris-versicolor'
5.7,2.8,4.1,1.3,'Iris-versicolor'
6.3,3.3,6.0,2.5,'Iris-virginica'
5.8,2.7,5.1,1.9,'Iris-virginica'
7.1,3.0,5.9,2.1,'Iris-virginica'};
您可以按如下方式创建所需的输出(从grp2idx
的输出中减去1,因为它从1开始计数(这是您在使用Matlab时可能希望采用的做法)):
我的数据不是单元格数组,它是纯txt fil,当我用textscan(fid、%d%d%d%d%s、“,”)读取它时,它会为每个值提供一个方形字符。我想是因为某种原因,它读得不正确。@Erogol:在格式字符串之间加逗号,即
%d,%d,
等
[cell2mat(data(:,1:end-1)),grp2idx(data(:,end))-1]
5.7000 2.9000 4.2000 1.3000 0
6.2000 2.9000 4.3000 1.3000 0
5.1000 2.5000 3.0000 1.1000 0
5.7000 2.8000 4.1000 1.3000 0
6.3000 3.3000 6.0000 2.5000 1.0000
5.8000 2.7000 5.1000 1.9000 1.0000
7.1000 3.0000 5.9000 2.1000 1.0000