突出显示大型 csv 中每行的最大值

突出显示大型 csv 中每行的最大值

我正在加载一个相当大的 .csv 文件(>100 行),我需要以longtable格式打印并突出显示每行中的最大值。我找到了这个帖子在表格中突出显示极值讨论了该问题,但解决方案需要为每一行添加一行。

我尝试使用

\pgfplotstablegetrowsof{\data}
\pgfplotstabletypeset[
    \foreach \n in {1,...,\pgfplotsretval}{
         highlight row max ={\data}{\n},
    } 
]{\data}

但编译不通过。我现在已经花了几个小时尝试阅读手册并寻找解决pgfplotstable方案(我不太精通 LaTeX 编程)。csvsimpledatatools

也可以看看:使用 pgfplotstable 突出显示每行上的值对的最小值/最大值

答案1

我终于能够做到这一点datatools,所需要做的就是阅读 200p 手册/s

\documentclass{article}
\usepackage{booktabs}
\usepackage{array}
\usepackage{datatool}
\usepackage{longtable}

\begin{document}
    \DTLloadrawdb[]{DATA}{DATA.csv}
    \DTLforeach{DATA}{}{                                % iterate over rows
        \def\theMax{0}                                  % set max to zero
        \DTLforeachkeyinrow{\thisValue}{                % iterate over cols
            \ifthenelse{\dtlcol>3}{                     % ignore first 3 cols (unrelated)
                \DTLmax{\theMax}{\theMax}{\thisValue}   % compare max with current value
            }{}
        }       
        % Now \theMax should be maximal

        \DTLforeachkeyinrow{\thisValue}{                % iterate again over cols
            \ifthenelse{\dtlcol>3}{                     % ignore first 3 cols (unrelated)
                % If current Value is maximal, make it bold
                \ifthenelse{\DTLisieq{\thisValue}{\theMax}}{
                    \DTLreplaceentryforrow{\dtlkey}{\textbf{\theMax}}
                }{}
            }{}
        }           
    }
    \DTLdisplaylongdb[]{DATA}
\end{document}

还请注意,如果每行有多个条目达到最大值,则会突出显示所有最大值。

相关内容