我有一个pgfplotstable
带有一些值的数据X
,这些值按 进行编号No
。(我的X
值按降序排列。)
如何找到X
小于或等于(的第一个值对应的数字例如)10
?
就我而言那就是No
= 40
。
有没有一种优雅的方式与\pgfplotstablesort
或/pgfplots/iflessthan/
?
附言:对于我的任务来说,创建一个“排序表”也是可以的,其中 X 值大于“10”的行将被跳过。
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotstableread[header=true, col sep=comma]{
No, X
31, 12.9032
32, 12.5000
33, 12.1212
34, 11.7647
35, 11.4286
36, 11.1111
37, 10.8108
38, 10.5263
39, 10.2564
40, 10.0000
41, 9.7561
42, 9.5238
43, 9.3023
44, 9.0909
}{\mytable}
\begin{document}
\pgfplotstabletypeset[string type]{\mytable}
\end{document}
答案1
我认为可以这样做:
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\pgfplotstableread[header=true, col sep=comma]{
No, X
31, 12.9032
32, 12.5000
33, 12.1212
34, 11.7647
35, 11.4286
36, 11.1111
37, 10.8108
38, 10.5263
39, 10.2564
40, 10.0000
41, 9.7561
42, 9.5238
43, 9.3023
44, 9.0909
}{\mytable}
\pgfplotstablegetrowsof{\mytable}
\pgfmathtruncatemacro\LastRowNo{\pgfplotsretval-1}
\begin{document}
\pgfplotstabletypeset[string type]{\mytable}
\pgfmathsetmacro{\MyValue}{10.2}
\foreach \row in {0,...,\LastRowNo}{%%
\pgfplotstablegetelem{\row}{X}\of{\mytable}
\pgfmathparse{\pgfplotsretval <= \MyValue ? 1 : 0}% \pgfmathresult % Test
\ifnum\pgfmathresult=1 %
\pgfmathparse{int(\row-0)}%
\pgfplotstablegetelem{\pgfmathresult}{No}\of{\mytable}%
\xdef\MyNo{\pgfplotsretval}%
\breakforeach% better...
\fi}%%
The last value that was lesser or equal {\MyValue} has the No {\MyNo}.
\end{document}