Plotar usando pgfplots de um arquivo de texto em formato longo (vs formato largo)?

Plotar usando pgfplots de um arquivo de texto em formato longo (vs formato largo)?

Na linguagem de programação estatísticaR, existem duas formas diferentes para representar dados. Oforma amplaparece com o seguinte:

     subject time age weight height
1 John Smith    1  33     90   1.87
2 Mary Smith    1  NA     55   1.54

Oforma longaparece com o seguinte:

     subject variable value
1 John Smith     time  1.00
2 Mary Smith     time  1.00
3 John Smith      age 33.00
4 Mary Smith      age    NA
5 John Smith   weight 90.00
6 Mary Smith   weight 55.00
7 John Smith   height  1.87
8 Mary Smith   height  1.54

Fonte do exemplo: Hadley Wickham'spapel. Mas observe que mudei o peso de Mary para 55, onde antes era NA.

É possível ler um arquivo de texto em formato longo e traçar, por exemplo, a altura em relação ao peso?

\documentclass{standalone}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}
  % the following code doesn't work, but communicates the idea
  % of what I want to work
  \addplot [x variable=height,y variable=weight] {input.txt};
\end{axis}
\end{tikzpicture}
\end{document}

A razão pela qual estou fazendo esta pergunta é porque quero traçar a saída de um programa de simulação de computador que escrevi, e é mais fácil produzir em formato longo do que em formato amplo. Atualmente, utilizo um Rscript convert.Rpara ler o arquivo de texto in.txtem formato longo e convertê-lo em um arquivo de texto out.txtem formato amplo, quepgfplotspode ler. Seria mais conveniente se de alguma forma o pgfplots pudesse ler e processar in.txtdiretamente, sem exigir que eu o executasse convert.Rmanualmente.

Responder1

[convertido do meu comentário]:

pgfplotstablevem sem suporte para o "formato longo". Se você deseja algum script de conversão que seja independente de R, você pode considerar escrever um script TeX (baseado na pgfplotstableprogramação básica do TeX) ou talvez um script LUA. Ou você invoca seu Rscript via shell escape ou via\addplot shell

informação relacionada