问题:与提出的问题相关这里。我已经将两列合并为一列,但我想将数字的精度从 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
在您的代码中,您正在设置两个数字打印选项输出列mean
和sd
,但实际上并没有打印它们(您只打印列var
和mixed
)。在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}