如何使用 pgfplotstable 仅显示表中的某些行?

如何使用 pgfplotstable 仅显示表中的某些行?

我有一张从文件中读取的表,我想仅显示给定列中具有特定值的行。特定值是一个字符串(例如农业)。如果该值是整数,我可以使用以下代码来执行此操作:

\pgfplotstabletypeset[row predicate/.code={%
\pgfplotstablegetelem{#1}{variable}\of{test.txt}
\ifnum\pgfplotsretval=3\relax
\else\pgfplotstableuserowfalse\fi}]{test.txt}

我想要匹配的值是“农业”。我尝试使用 \if 和 \ifx,但没有成功。

任何意见都有帮助!谢谢!

编辑:

梅威瑟:

\documentclass{article}
\usepackage{float}
\usepackage{pgfplotstable}

\begin{document}

\pgfplotstabletypeset[row predicate/.code={%
\pgfplotstablegetelem{#1}{variable}\of{test.txt}
\ifnum\pgfplotsretval=3\relax
\else\pgfplotstableuserowfalse\fi}]{test.txt}

\end{document}

测试.txt:

variable    2016    2017    2018
2   0.16519 0.1519385   0.1924408
Agricultural    0.4751213   0.3346962   0.2863951
3   0.0868261   0.1613692   0.2666448
3   0.4510618   0.5404901   0.5006156

答案1

您可以使用string type列样式variable,然后将其作为字符串进行测试,就像这样egreg 的回答

\documentclass{article}
\usepackage{float}
\usepackage{pgfplotstable}
\usepackage{etoolbox}
\usepackage{filecontents}
\begin{filecontents*}{test.txt}
variable    2016    2017    2018
2   0.16519 0.1519385   0.1924408
Agricultural    0.4751213   0.3346962   0.2863951
3   0.0868261   0.1613692   0.2666448
3   0.4510618   0.5404901   0.5006156
\end{filecontents*}

\begin{document}
\pgfplotstableread{test.txt}\mytable
\pgfplotstabletypeset[
  columns/variable/.style={string type},
  row predicate/.code={%
  \pgfplotstablegetelem{#1}{variable}\of{\mytable}
  % code from https://tex.stackexchange.com/a/22924/101651
  \ifnum\pdfstrcmp{\pgfplotsretval}{Agricultural}=0\relax
  \else\pgfplotstableuserowfalse\fi}
]{\mytable}

\end{document}

在此处输入图片描述

相关内容