![pgfplotstable 中的列总和](https://linux22.com/image/342480/pgfplotstable%20%E4%B8%AD%E7%9A%84%E5%88%97%E6%80%BB%E5%92%8C.png)
我想对 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}
%