pgfplotstable 中的列总和

pgfplotstable 中的列总和

我想对 mytable 中最后 3 列的数字求和(见下文)。如果 A 列中的所有日期都不同,MWE 可以正常工作并给出正确的总和(见 MWE)。但我希望仅在 A 列的第一行中列出日期 1,并将 A 列的其余行留空。在后一种情况下,程序失败并给出错误消息:“...列数不平衡...”。由于所有数据都指日期 1(而不是日期 2、日期 3 等),我真的很希望得到解决方案。谢谢。

\documentclass{article}
\usepackage{booktabs}
\usepackage{pgfplotstable}


\newcommand{\addsomestatistics}[3]{ %
% #1=table name
% #2=first column name
% #3=list of columns to decorate
% Transpose the table, so we can work on rows instead of columns
\pgfplotstabletranspose[colnames from={#2},input colnames to={#2}]{\intermediatetable}{#1}
%
% Sums for each column
\pgfplotstablecreatecol[
   create col/assign/.code={%
      \def\entry{}
      \foreach \i in {#3} {
        \ifnum\pgfplotstablerow=\i
          \def\colsum{0}
          \pgfmathtruncatemacro\maxcolindex{\pgfplotstablecols-1}
          \pgfplotsforeachungrouped \col in {1,...,\maxcolindex}{
              \pgfmathsetmacro\colsum{\colsum+\thisrowno{\col}}
          }
          \xdef\entry{\colsum}
        \fi
      }
      \pgfkeyslet{/pgfplots/table/create col/next content}\entry
    }
]{Sum}\intermediatetable
%
% Transpose back to the original form
\pgfplotstabletranspose[colnames from=#2, input colnames to=#2]{\statstable}{\intermediatetable}
}
%


\begin{document}


\pgfplotstableread{
    A B C D E F
   Date-1   Ken Tod 202  12  0
   Date-2      Wood    Haz 317 1 0
   Date-3     Front    -   102 10  0
    Date-4     Front Haz 145 11  0
 }\mytable

\addsomestatistics{\mytable}{A}{2,3,4}

\pgfplotstabletypeset[
  every head row/.style={%
    before row={\toprule
 %%       & \multicolumn{3}{c}{Handedness}\\
        \cmidrule{2-4}},
    after row=\midrule},
  every last row/.style={after row=\bottomrule},
  columns/A/.style={string type},
  columns/B/.style={string type},
   columns/C/.style={string type},
  columns={A,B, C, D, E, F},
]\statstable

\end{document}
%

相关内容