基於另一列對一列中的儲存格內容進行後處理

基於另一列對一列中的儲存格內容進行後處理

我正在嘗試做一些與這篇文章非常相似的事情:

pgfplotstable:按列對儲存格內容進行條件後處理

但是,我想根據另一列的內容對該列進行後處理。例如,如果對應的值大於2,我想*在該列中新增a。coefficientt-value

在表中,通常我只會報告 和coefficientstandard error而不報告t-value。我想coefficient根據 中的值對列進行後處理coefficient/standard error

以下是 MWE:

\documentclass{article}
\usepackage{pgfplotstable}
\begin{filecontents*}{test1.dat}
coefficient {standard error} 
-.0159375    .008852
-.0107286   .0091658
.0042201   .0089453
.0108719   .0038041
\end{filecontents*}

\begin{document}
\pgfplotstableread{test1.dat}\results
\pgfplotstablecreatecol[expr={\thisrow{coefficient}/\thisrow{standard error}}]{t-value}{\results}

\def\bordervalue{2}
\pgfplotstabletypeset[
columns={coefficient, standard error, t-value},
columns/t-value/.style={ 
    %preproc/expr = {100*##1},
    postproc cell content/.style={
    /pgfplots/table/@cell content/.add={}{%
    \pgfmathparse{int(greater(##1,\bordervalue))}
    \ifnum\pgfmathresult=1
       $^*$
    \fi
    },
    },
},
]\results
\end{document}

在此輸入影像描述

我怎樣才能將 放入*coefficient列,以便我不需要報告t-value

任何幫助表示讚賞。

答案1

你可以用一種棘手的方式來做到這一點:

columns/coefficient/.style={
postproc cell content/.append code={%
\pgfplotstablegetelem{\pgfplotstablerow}{t-value}\of{\results}%
\pgfmathsetmacro{\TvalueTest}{\pgfplotsretval > \bordervalue ? 1 : 0}%
\ifthenelse{\TvalueTest = 1}% if 
{\pgfkeysalso{/pgfplots/table/@cell content/.add={$}{*{}^*$}} }% then
{}% else
}},

順便說一句:我簡化了您在列中添加星星的方法t-value
\pgfmathparse{##1 > \bordervalue ? "^*" : ""}\pgfmathresult

在此輸入影像描述

\documentclass[margin=5pt]{standalone}
%\documentclass{article}

\usepackage{pgfplotstable}
\usepackage{ifthen}
\usepackage{colortbl}

\usepackage{filecontents}
\begin{filecontents*}{test1.dat}
coefficient {standard error} 
-.0159375    .008852
-.0107286   .0091658
.0042201   .0089453
.0108719   .0038041
\end{filecontents*}

\begin{document}
\pgfmathsetmacro\bordervalue{2}

\pgfplotstableread[]{test1.dat}\results
\pgfplotstablecreatecol[expr={\thisrow{coefficient}/\thisrow{standard error}}]{t-value}{\results}

\pgfplotstabletypeset[
columns={coefficient, standard error, t-value},
columns/t-value/.style={numeric type,  
postproc cell content/.style={
/pgfplots/table/@cell content/.add={$}{
\pgfmathparse{##1 > \bordervalue ? "^*" : ""}\pgfmathresult$  % New
},},
},
% New:
columns/coefficient/.style={
postproc cell content/.append code={%
\pgfplotstablegetelem{\pgfplotstablerow}{t-value}\of{\results}%
\pgfmathsetmacro{\TvalueTest}{\pgfplotsretval > \bordervalue ? 1 : 0}%
\ifthenelse{\TvalueTest = 1}% if 
{\pgfkeysalso{/pgfplots/table/@cell content/.add={\cellcolor{pink}$}{*{}^*$}}}% then
{}% else
}},
]\results
\end{document}

相關內容