pgfplotstable:两列合并为一列,其中包含数字数据,但无法四舍五入

pgfplotstable:两列合并为一列,其中包含数字数据,但无法四舍五入

问题:与提出的问题相关这里。我已经将两列合并为一列,但我想将数字的精度从 4 四舍五入为 2。我该怎么做?

以下是 MWE:

\documentclass{standalone}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[row sep=\\,col sep=&,header=true]{
var & mean & sd \\
x & 95.265 & 11.4801 \\
y & 85.7 & 18.95 \\
z & 15 & 5.01 \\
}\means

\pgfplotstabletypeset[
  columns/var/.style={string type},
  columns/mean/.style={fixed zerofill,precision=2},
  columns/sd/.style={fixed zerofill,precision=2},
  columns/mixed/.style={string type,column type=l,column name={Mean (SD)}},
  columns={var, mixed},
  create on use/mixed/.style={
    create col/assign/.code={%
      \edef\entry{\thisrow{mean} (\thisrow{sd})}%
      \pgfkeyslet{/pgfplots/table/create col/next content}\entry
    }
  }
]\means    \end{document}

尽管我在“平均值”和“标准差”列中指定了精度,但输出中的“平均值(标准差)”列仍为原始数据格式。如何使用零填充将其正确舍入?

答案1

在您的代码中,您正在设置两个数字打印选项输出meansd,但实际上并没有打印它们(您只打印列varmixed)。在mixed列中,您没有将数字传递给数字格式化例程,而是直接从源表中插入它们。\thisrow{mean}\noexpand\pgfmathprintnumber[fixed zerofill, precision=2]{\thisrow{mean}}\thisrow{sd}替换\noexpand\pgfmathprintnumber[fixed zerofill, precision=2]{\thisrow{sd}}将得到所需的结果:

\documentclass{standalone}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[row sep=\\,col sep=&,header=true]{
var & mean & sd \\
x & 95.265 & 11.4801 \\
y & 85.7 & 18.95 \\
z & 15 & 5.01 \\
}\means

\pgfplotstabletypeset[
  columns/var/.style={string type},
  columns/mixed/.style={string type,column type=l,column name={Mean (SD)}},
  columns={var, mixed},
  create on use/mixed/.style={
    create col/assign/.code={%
      \edef\entry{\noexpand\pgfmathprintnumber[fixed zerofill, precision=2]{\thisrow{mean}} (\noexpand\pgfmathprintnumber[fixed zerofill, precision=2]{\thisrow{sd}})}%
      \pgfkeyslet{/pgfplots/table/create col/next content}\entry
    }
  }
]\means    \end{document}

相关内容