%% 不管是什么数据,都要转化为矩阵形式
data = data_table3(:,3:end); %所有行/第三列到最后一列%仍然是table的形式
data1 = table2array(data); %table-> double(矩阵)
%% 求最大值 最小值 平均值
data_max = max(data1); %注意这里求的是每一列得最大值 %求行的时候要进行转置(data')
%% 求不为0的次数位置
% ~(不等于) = == > < = >= <=
data_shang1 = data1(1,:);%第一行的数据
index1 = find(data_shang1~=0);%找到不为0的位置
num_index1 = length(index1); %找到不为0的次数
data_shang1(index1);
%% 循环
data_shangall = zeros(1,size(data1,1));
for i = 1:size(data1,1)
data_shang1 = data1(i,:);
index1 = find(data_shang1 ~=0);
num_index1 = length(index1);
data_mean = mean(data_shang1(index1));%求平均值
data_shangall(i) = num_index1;
end
%% 找到矩阵的缺失值并删除所在行或列
index = isnan(data_nan); % 最后生成logical变量 (NaN变成1,正常的变成0)
data_nan1 = data_nan;
data_nan1(index1,:) = []; %赋值为空
%% 分布找出类属于A,B,C 的数据,存储起来
%% 将文字标签改为数字标签
data_abc = data_table1(:,2);%将第二列取出来 data_table1(2,:);%第二行
data_abc_num = table2array(data_abc);%表文件转化为cell
%%
data_tongji = tabulate(data_abc_num);% 统计ABC个数
for i = 1:size(data_tongji,1)
dianli_str{1,i} = data_tongji{i,1};
end
%%
data_shuju = zeros(length(data_abc_num),1);
for NN = 1:length(dianli_str)
idx = find(ismember(data_abc_num,dianli_str{1,NN}));%寻找文字变量的位置
data_shuju(idx)=NN;
end
%讲ABC找出来
for i = 1:size(data_tongji,1)%讲不同标签行的位置分别找出来存在不同的元胞里,因为
A(i)={find(data_shuju == i)};
end
%% 对cell里的数据进行同样的处理
% 标准化 zescore
std_data = zscore(data1);%对矩阵每列进行标准化
%%
std_data1 = mapminmax(data1',0,1)'; %mapminmax对每行进行标准化,操作的时候
%% 如果对B类数据进行标准化
B_data = data1(A{1,1},:);
std_B_data = zscore(B_data);
A{2,1} = std_B_data;
%批量操作
for i = 1:length(A)
B_data = data1(A{1,i},:);
std_B_data = zscore(B_data);
C{1,i} = std_B_data;
end
%%
for i = 1:size(data1,1)
data_te = data(i,:);
data_mean = mean(data_te);
data_std = std(data_te);
index = find((data_te>(data_mean+3*data_std))|(data_te<(data_mean-3*data_std)));
AA{i} = index;
end
%%
data1([1,4,5],:) = [];