2017-06-19 96 views
1

我有一個nxn .csv文件,我在其中找到一列的累計和。我需要將此列添加一個標題cumsum到現有.csv文件的末尾,以使其成爲nx(n + 1)。這怎麼能做到?我附上一個samaple:在MATLAB中添加一列到.csv中

filename  A  B 
    aa   23  34 
    aa   56  98 
    aa   8  90 
    aa   7  89 

我發現塔的cumsum甲

 23 
     79 
     87 
     94 

我需要此列追加到的.csv的端部作爲

filename  A  B  cumsum 
    aa   23  34  23 
    aa   56  98  79 
    aa   8  90  87 
    aa   7  89  94 

我有2個問題在這裏: 1.我每次提取列A以執行cumsum操作。我如何直接從表中找到沒有提取的單個列?

  1. 如何在現有表格的末尾創建一個新列以添加標題'cumsum'的cumsum列?

回答

0

對於點1:可以使用csvread讀取從.csv文件直接一個特定的列,而無需加載整個事情。對於你的榜樣,你可以這樣做:

A = csvread('your_file.csv', 1, 1, [1 1 nan 1]); 

nan允許它讀取所有的行,直到最後(雖然我不知道這是任何相關文檔)。

採用csvread適用於含有數字數據文件,儘管它工作正常爲上面的例子,即使在第一行中的字符輸入並.csv文件的第一列。但是,如果您要讀取的文件的部分是,並且後面的包含字符條目,則該文件似乎失敗。使用xlsread一個更普遍的解決辦法如下:

A = xlsread('your_file.csv', 'B:B'); 

對於點2:csvwritedlmwrite內置功能不會出現能夠追加新,只是新。不過,您可以使用xlswrite,即使它是.csv文件。下面是它是如何爲您的示例工作:

xlswrite('your_file.csv', [{'cumsum'}; num2cell(cumsum(A))], 1, 'D1'); 

和這裏的的your_file.csv內容將是什麼樣子:

filename,A,B,cumsum 
aa,23,34,23 
aa,56,98,79 
aa,8,90,87 
aa,7,89,94 
+0

由於我的.csv文件是字符和數字值的組合,我得到的不匹配錯誤在使用'A = csvread('your_file.csv',1,1,[1 1 nan 1])的第147行;' – DaphFab

+0

@DaphFab:我使用'xlsread'添加了另一個解決方案。 – gnovice