Estoy intentando hacer algo bastante similar a esta publicación:
pgfplotstable: posprocesamiento condicional del contenido de la celda por columna
Sin embargo, me gustaría posprocesar la columna en función del contenido de otra columna. Por ejemplo, quiero agregar a *
a la coefficient
columna si el correspondiente t-value
es mayor que 2.
En la tabla, normalmente solo informo el coefficient
y standard error
, no el t-value
. Me gustaría posprocesar las coefficient
columnas en función de los valores de coefficient/standard error
.
A continuación se muestra el 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}
¿Cómo puedo poner el *
en la coefficient
columna para no tener que informarlo t-value
?
Se agradece cualquier ayuda.
Respuesta1
Puedes hacerlo de una manera complicada:
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
}},
Por cierto: simplifiqué tu método para agregar una estrella en la t-value
columna:
\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}