如何将csv列的数据添加到G.Edges

时间:2017-12-06 06:22:48

标签: matlab

我有一个带有这些列的csv文件

   1            2           3         4 
EndNodes      Weight      Name     Distance 

和G.Edges采用这种格式

 fid = fopen('grocerydb.csv');
 productUPC = textscan(fid,1);
 productName = textscan(fid,'%s',2);
 fclose(fid);

我想要做的是阅读grocerydb.csv文件并将csv文件第2列中的所有数据添加到G.Edges的第5列

我试过这段代码

cyl

但它读取第二行而不是列。 我已经回顾了类似问题的一些答案,例如Reading specific column from CSV file in matlab。它给出了行的指令,我想要的是列数据而不是行

如何实现阅读第二列并将其添加到G.Edges?

1 个答案:

答案 0 :(得分:0)

我认为G.Edges是MATLAB中的一个表格,这样可以简化生活。据我所知,MATLAB不像Python那样喜欢csv文件。所以,我们把csv作为一个表来读。假设我们有一个表TARGETTable,其变量为acct,num_courses_visited,total_minutes_visited和lessons_completed,就像你的G.Edges一样。此外,csv文件中有很多列'daily-engagement.csv',我们只需要第二个数据列utc_date。 csv文件非常大,我们需要几行。最后,我们注意到列utc_date是数据,我们应该在MATLAB中将它转换为正确的类型。

filename = 'D:\Temp\daily-engagement.csv';
delimiter = ',';
startRow = 2;
endRow = 9;
formatSpec = '%*q%{yyyy-MM-dd}D%*s%*s%*s%*s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, endRow-startRow+1, 'Delimiter', delimiter, 'TextType', 'string', 'HeaderLines', startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n');
fclose(fileID);
dailyengagement = table(dataArray{1:end-1}, 'VariableNames', {'utc_date'});

现在,我们可以将这种日常接触与TARGETTable结合起来。

TARGETTable = [TARGETTable dailyengagement]