2017-06-19 419 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