使用 pgfplotstable 对表的行进行重新排序

使用 pgfplotstable 对表的行进行重新排序

我在一个名为的文件中有一个表dummy.txt,其中包含以下数据:

value1  value2  value3
1   11  2.13652246624232
2   12  0.513442717554625
3   13  1.69712766271722
4   14  -1.57360405275275
5   15  0.784061900065905

我可以通过以下方式打印表格

\pgfplotstabletypeset[
  col sep=tab, 
  columns={value2,value1} 
  ]{dummy.txt}

是否有类似的简单方法来选择行的顺序和实际选择,就像选择列一样?

我看了一下手册,唯一接近的就是参数row predicate,对于我选择行号 2、3 和 5 的目标来说,它似乎有点太强大了。而且我不知道如何在 TeX 中使用逻辑谓词。

答案1

“重新排序”听起来很像排序。事实上,您可以根据所需的顺序对表格进行排序 - 您只需要一个带有顺序值的其他(临时)列。当然,排序不会过滤。但您可以轻松地使用它来skip rows between index过滤排序结果,因为不需要的条目可以很容易地排到最后:

\documentclass{standalone}

\usepackage{pgfplotstable}


\begin{document}
\pgfplotstabletypeset[
  columns={value2,value1},
  sort,sort key=sort order,
  create on use/sort order/.style={
    create col/set list={100,1,2,100,0},
  },
  skip rows between index={3}{100},
  ]{
value1  value2  value3
1   11  2.13652246624232
2   12  0.513442717554625
3   13  1.69712766271722
4   14  -1.57360405275275
5   15  0.784061900065905
}
\end{document}

在此处输入图片描述

此代码根据列中的值进行排序sort order。此列不存在,将根据规范创建create on use/sort order- 并且包含 5 个值的明确列表,每行一个。value1=5 的行接收 0,value1=2 的行接收 1,value1=3 的行接收 2 - 所有其他行均接收 100。您可以轻松添加columns={value2,value1,sort order}以查看结果。

您提到这“只是一个示例表”。如果您有一个很大的表,这些create on use内容很容易变得乏味。在这种情况下,您可能应该sort order在表中添加一个“真实”列。

相关内容