Conditional data extraction from csv file
5 次查看(过去 30 天)
显示 更早的评论
I wish to extract the data from the file 'ddata' into separate excel files containing only the variable columns of
v7,v8,v9 & v10 with respect to the varying values of v3,v4,v5 & v6. The values of v3 varies from 1 to 5, v4 varies from 1 to 2,
v5 varies from 1 to 3, and v6 varies from 1 to 8. For example, the condition when v3=1,v4=1,v5=1 & v6=1 will create the first
excel file. Please help.
5 个评论
dpb
2022-7-24
编辑:dpb
2022-7-24
I said it was "air code" -- the format string isn't enclosed in brackets to pull it all together into one string...
>> i=1;sprintf(['Data' repmat('_%02d',1,4) '.xlsx'],id1(i),id2(i),id3(i),id4(i))
ans =
'Data_01_01_01_01.xlsx'
>>
The Q? still is, why do you actually have to have files instead of just processing the groups?
回答(1 个)
Siraj
2023-9-5
Hi! It is my understanding that you want to find all the unique combinations of values of column “v3”, “v4”, “v5” & “v6”, and now corresponding to these unique values you want to extract values of other columns and write those extracted values in a different excel file.
Begin by reading the data into a table using the "readtable" function. You can find more information about this function in the following link:
Next extract “v3”, “v4”, “v5” & “v6” as an array. Use the "unique" function to find all the unique combinations of these values. Refer to the following link for more details on how to use this function: https://www.mathworks.com/help/matlab/ref/double.unique.html
Iterate through each unique combination and extract the corresponding values from the other columns. Store these values in a temporary table. Write the temporary table to a separate Excel file. Refer to the link below to learn how to write a table to a file from MATLAB.
Refer to the example code below for better understanding.
% Create a sample table
T = table([1; 2; 3; 1; 2], [4; 5; 6; 4; 5], [7; 8; 9; 7; 8], [1;2;1;2;3],[1;2;1;2;3], 'VariableNames', {'Column1', 'Column2', 'Column3','Column4','Column5'});
disp(T);
% Extract the first three columns as an array
columns123 = table2array(T(:, 1:3));
% Find the unique combinations
uniqueCombinations = unique(columns123, 'rows');
for i = 1 : size(uniqueCombinations,1) %looping thorough the unique combinations
temp_T = T(T.Column1 == uniqueCombinations(i,1) & T.Column2 == uniqueCombinations(i,2) & T.Column3 == uniqueCombinations(i,3), ["Column4", "Column5"]);
disp(temp_T);
% saving the extracted values into an excel file
filename = "table_" + num2str(i)+".xlsx"; %generating the filename
writetable(temp_T,filename)
end
To learn more about “tables” in MATLAB refer to the link below.
Hope this helps.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!