Построить график с помощью pgfplots из текстового файла в длинной форме (или в широкой форме)?

Построить график с помощью pgfplots из текстового файла в длинной форме (или в широкой форме)?

На языке статистического программированияR, существуют две разные формы представления данных.широкая формавыглядит следующим образом:

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

Theдлинная формавыглядит следующим образом:

     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

Источник примера: Хэдли Уикхэмбумага. Но обратите внимание, что я изменил вес Мэри на 55, тогда как раньше он был NA.

Можно ли прочитать текстовый файл в длинном формате и построить график, например, зависимости роста от веса?

\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}

Причина, по которой я задаю этот вопрос, заключается в том, что я хочу построить график выходных данных программы компьютерного моделирования, которую я написал, и его легче выводить в длинной форме, чем в широкой. В настоящее время я использую скрипт Rдля convert.Rчтения текстового файла in.txtв длинной форме и преобразования его в текстовый файлout.txt в широкой форме, которыйpgfplotsможет читать. Было бы удобнее, если бы pgfplots мог читать и обрабатывать in.txtнапрямую, не требуя от меня ручного запуска convert.R.

решение1

[конвертировано из моего комментария]:

pgfplotstableпоставляется без поддержки "длинной формы". Если вам нужен некий скрипт преобразования, который не зависит от R, вы можете рассмотреть написание скрипта TeX (основанного на pgfplotstableбазовом программировании TeX) или, возможно, скрипта LUA. Или вы вызываете свой Rскрипт через shell escape или через\addplot shell

Связанный контент