R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เดชเดพเด•เตเด•เต‡เดœเต เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ R เดญเดพเดทเดฏเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดŸเต† เด•เดพเดฎเตเดชเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต - เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ.
เดชเดพเด•เตเด•เต‡เดœเดฟเตปเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดฒเด•เตเดทเตเดฏเด‚ เดกเดพเดฑเตเดฑเดฏเต† เด•เตƒเดคเตเดฏเดฎเดพเดฏ เดฐเต‚เดชเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด• เดŽเดจเตเดจเดคเดพเดฃเต.

เดนเดฌเตเดฐเต†เดฏเดฟเตฝ เด‡เดคเดฟเดจเด•เด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเด‚ เดˆ เดชเดพเด•เตเด•เต‡เดœเดฟเดจเดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต 2015 เดฎเตเดคเดฒเตเดณเตเดณเดคเดพเดฃเต. เด•เตเดฑเดšเตเดšเต เดฆเดฟเดตเดธเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเต เด…เดคเดฟเตปเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเดพเดฏ เดนเต†เดกเตโ€Œเดฒเดฟ เดตเดฟเด•เตเด•เดพเด‚ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดš เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เดŽเดธเต.เดœเต†.เด•เต†.: เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ () เดชเตเดฐเดšเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ () เดจเดฟเดฐเดธเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดฎเต‹?

เดนเดพเดกเตโ€Œเดฒเดฟ เดตเดฟเด•เตเด•เดพเด‚: เด’เดฐเต เดชเดฐเดฟเดงเดฟ เดตเดฐเต†. เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด…เดตเดฏเดฟเดฒเต† เดฌเด—เตเด•เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดžเด™เตเด™เตพ เดฎเต‡เดฒเดฟเตฝ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด…เดต เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด…เดตเดธเตเดฅเดฏเดฟเตฝ เดคเดจเตเดจเต† เดคเตเดŸเดฐเตเด‚.

เด‰เดณเตเดณเดŸเด•เตเด•เด‚

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดกเดพเดฑเตเดฑ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดฑเต† เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเด•เดพเด‚ เดŸเต†เดฒเด—เตเดฐเดพเด‚ ะธ YouTube เดšเดพเดจเดฒเตเด•เตพ. เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเดฟเดจเตเดฑเต† เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ R เดญเดพเดทเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

TidyData เด†เดถเดฏเด‚

เดฒเด•เตเดทเตเดฏเด‚ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ โ€” เด’เดฐเต เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เด•เตŠเดฃเตเดŸเตเดตเดฐเดพเตป เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเดทเตเด•เดณเด™เตเด•เดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดŽเดจเตเดจเดคเต เด‡เดตเดฟเดŸเต†เดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเดพเดฃเต:

  • เด“เดฐเต‹ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด‚ เด’เดฐเต เด•เต‹เดณเดคเตเดคเดฟเดฒเดพเดฃเต.
  • เด“เดฐเต‹ เดจเดฟเดฐเต€เด•เตเดทเดฃเดตเตเด‚ เด’เดฐเต เดšเดฐเดŸเดพเดฃเต.
  • เด“เดฐเต‹ เดฎเต‚เดฒเตเดฏเดตเตเด‚ เด’เดฐเต เดธเต†เดฒเตเดฒเดพเดฃเต.

เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเตเดฎเตเดชเต‹เตพ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเต.

tidyr เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เดชเดŸเตเดŸเดฟเด•เด•เตพ เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดค เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดซเด‚เด—เตเดทเดจเตเด•เตพ tidyr-เตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • fill() - เดฎเตเดฎเตเดชเดคเตเดคเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดจเดฟเดฐเดฏเดฟเตฝ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตฝ;
  • separate() - เด’เดฐเต เดธเต†เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดซเต€เตฝเดกเต เดชเดฒ เดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเดจเตเดจเต;
  • unite() - เดจเดฟเดฐเดตเดงเดฟ เดซเต€เตฝเดกเตเด•เตพ เด’เดจเตเดจเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เดซเด‚เด—เตเดทเตปเตเดฑเต† เดตเดฟเดชเดฐเต€เดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ separate();
  • pivot_longer() - เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป;
  • pivot_wider() - เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป. เดซเด‚เด—เตโ€Œเดทเตป เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดจเตเดจเดฟเตปเตเดฑเต† เดตเดฟเดชเดฐเต€เดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ pivot_longer().
  • gather()เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ - เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป;
  • spread()เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ - เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป. เดซเด‚เด—เตโ€Œเดทเตป เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดจเตเดจเดฟเตปเตเดฑเต† เดตเดฟเดชเดฐเต€เดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ gather().

เดกเดพเดฑเตเดฑ เดตเตˆเดกเต เดฎเตเดคเตฝ เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเด‚ เดคเดฟเดฐเดฟเดšเตเดšเตเด‚ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เด†เดถเดฏเด‚

เดฎเตเดฎเตเดชเต, เด‡เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดซเด‚เด—เตเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเตเดจเตเดจเต gather() ะธ spread(). เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดจเดฟเดฒเดจเดฟเดจเตเดจ เดตเตผเดทเด™เตเด™เดณเดฟเตฝ, เดชเดพเด•เตเด•เต‡เดœเดฟเตปเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเต เด‰เตพเดชเตเดชเต†เดŸเต† เดฎเดฟเด•เตเด• เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเด‚, เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เดณเตเด‚ เด…เดตเดฏเตเดŸเต† เดตเดพเดฆเด™เตเด™เดณเตเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด…เดต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเดฟเตฝ เดเดคเดพเดฃเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต. เดตเตˆเดกเต เดฎเตเดคเตฝ เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดตเดฐเต†เดฏเตเดณเตเดณ เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเด‚, เดคเดฟเดฐเดฟเดšเตเดšเตเด‚.

เด‡เด•เตเด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เตป เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเตเด•เตพ เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เดชเตเดคเดฟเดฏ, เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดšเต‡เตผเดคเตเดคเต.

เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ pivot_longer() ะธ pivot_wider() เดชเดพเด•เตเด•เต‡เดœเดฟเดฒเต† เดšเดฟเดฒ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดšเต‹เดฆเดจเด‚ เด‰เตพเด•เตเด•เตŠเดฃเตเดŸเดฟเดฐเตเดจเตเดจเต cdata, เดœเต‹เตบ เดฎเต—เดฃเตเดŸเตเด‚ เดจเต€เดจ เดธเตเดฎเดฒเตเด‚ เดšเต‡เตผเดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต.

tidyr 0.8.3.9000-เตปเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดชเดพเด•เตเด•เต‡เดœเดฟเตปเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ 0.8.3.9000, เดชเตเดคเดฟเดฏ เดซเต€เดšเตเดšเดฑเตเด•เตพ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•.

devtools::install_github("tidyverse/tidyr")

เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดˆ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ GitHub-เดฒเต† เดชเดพเด•เตเด•เต‡เดœเดฟเตปเตเดฑเต† dev เดชเดคเดฟเดชเตเดชเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดฒเดญเตเดฏเดฎเดพเด•เต‚.

เดชเตเดคเดฟเดฏ เดซเต€เดšเตเดšเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเด‚

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดชเตเดคเดฟเดฏ เดซเด‚เด—เตเดทเดจเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดชเดดเดฏ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ, เดชเดดเดฏ เดซเด‚เด—เตเดทเดจเตเด•เดณเตเดŸเต† เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเดพเตป เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดคเดฟเดฏเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเต‡ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดจเดŸเดคเตเดคเตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚; pivot_*() เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ.

เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด•.

เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด• เดซเด‚เด—เตโ€Œเดทเตป เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃ เด•เต‹เดกเต

# example
library(dplyr)
stocks <- data.frame(
  time = as.Date('2009-01-01') + 0:9,
  X = rnorm(10, 0, 1),
  Y = rnorm(10, 0, 2),
  Z = rnorm(10, 0, 4)
)

# old
stocks_gather <- stocks %>% gather(key   = stock, 
                                   value = price, 
                                   -time)

# new
stocks_long   <- stocks %>% pivot_longer(cols      = -time, 
                                       names_to  = "stock", 
                                       values_to = "price")

เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดธเตเดชเตเดฐเต†เดกเต เดซเด‚เด—เตเดทเตป เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃ เด•เต‹เดกเต

# old
stocks_spread <- stocks_gather %>% spread(key = stock, 
                                          value = price) 

# new 
stock_wide    <- stocks_long %>% pivot_wider(names_from  = "stock",
                                            values_from = "price")

เด•เดพเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดฟเตฝ pivot_longer() ะธ pivot_wider(), เดฏเดฅเดพเตผเดคเตเดฅ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดธเตเดฑเตเดฑเต‡เดพเด•เตเด•เตเด•เตพ เด†เตผเด—เตเดฏเตเดฎเต†เตปเตเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดฐเด•เดณเตŠเดจเตเดจเตเด‚ เดชเดŸเตเดŸเดฟเด•เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เดชเต‡เดฐเตเด•เตพ_เดฒเต‡เด•เตเด•เต ะธ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ_เดŸเต เด…เดตเดฐเตเดŸเต† เดชเต‡เดฐเตเด•เตพ เด‰เดฆเตเดงเดฐเดฃเดฟ เดšเดฟเดนเตเดจเดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เด’เดฐเต เดชเตเดคเดฟเดฏ เด†เดถเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ.

R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เดฐเดšเดฏเดฟเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เตเดฑเดฟเดชเตเดชเต

เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดตเดพเดšเด•เด™เตเด™เดณเตเด‚ เด…เดกเดพเดชเตเดฑเตเดฑเต€เดตเต เด†เดฃเต, เดธเตเดตเดคเดจเตเดคเตเดฐ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดชเต‹เดฒเตเด‚ เดžเดพเตป เดชเดฑเดฏเตเด‚ เดตเดฟเด—เตเดจเต†เดฑเตเดฑเตเด•เตพ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดŸเตˆเดกเตˆเดตเต‡เดดเตเดธเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต.

เดกเดพเดฑเตเดฑ เดตเตˆเดกเต เดฎเตเดคเตฝ เดฒเต‹เด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚

pivot_longer () - เดจเดฟเดฐเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดšเตเดšเตเด‚ เดตเดฐเดฟเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เต‚เดŸเตเดŸเดฟเดฏเตเด‚ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเตเด•เดณเต† เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏเดคเดพเด•เตเด•เตเดจเตเดจเต.

R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

library(tidyr)
library(dplyr)
library(readr)

(เดฎเดฑเตเดฑเต เด•เดพเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ) เด†เดณเตเด•เดณเต‹เดŸเต เด…เดตเดฐเตเดŸเต† เดฎเดคเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดตเดพเตผเดทเดฟเด• เดตเดฐเตเดฎเดพเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดšเต‹เดฆเดฟเดšเตเดš เด’เดฐเต เดธเตผเดตเต‡เดฏเตเดŸเต† เดซเดฒเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดžเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เดฒเตเดฃเตเดŸเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚:

#> # A tibble: 18 x 11
#>    religion `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k`
#>    <chr>      <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
#>  1 Agnostic      27        34        60        81        76       137
#>  2 Atheist       12        27        37        52        35        70
#>  3 Buddhist      27        21        30        34        33        58
#>  4 Catholic     418       617       732       670       638      1116
#>  5 Donโ€™t kโ€ฆ      15        14        15        11        10        35
#>  6 Evangelโ€ฆ     575       869      1064       982       881      1486
#>  7 Hindu          1         9         7         9        11        34
#>  8 Historiโ€ฆ     228       244       236       238       197       223
#>  9 Jehovahโ€ฆ      20        27        24        24        21        30
#> 10 Jewish        19        19        25        25        30        95
#> # โ€ฆ with 8 more rows, and 4 more variables: `$75-100k` <dbl>,
#> #   `$100-150k` <dbl>, `>150k` <dbl>, `Don't know/refused` <dbl>

เดˆ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดตเดฐเตเดŸเต† เดฎเดคเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดตเดฐเดฟเด•เดณเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเตเด•เดณเดฟเตฝ เดšเดฟเดคเดฑเดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดจเตเดจ เดตเดฐเตเดฎเดพเดจ เดจเดฟเดฒเด•เดณเตเด‚. เด“เดฐเต‹ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดตเดฐเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดฎเดคเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดตเดฐเตเดฎเดพเดจ เดจเดฟเดฒเดตเดพเดฐเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เด•เดตเดฒเดฏเดฟเดฒเต† เดธเต†เตฝ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดŸเตเดŸเดฟเด• เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณเดคเตเด‚ เดถเดฐเดฟเดฏเดพเดฏเดคเตเดฎเดพเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดตเดฐเดพเตป, เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเตฝ เดฎเดคเดฟ pivot_longer():

pew %>% 
  pivot_longer(cols = -religion, names_to = "income", values_to = "count")

pew %>% 
  pivot_longer(cols = -religion, names_to = "income", values_to = "count")
#> # A tibble: 180 x 3
#>    religion income             count
#>    <chr>    <chr>              <dbl>
#>  1 Agnostic <$10k                 27
#>  2 Agnostic $10-20k               34
#>  3 Agnostic $20-30k               60
#>  4 Agnostic $30-40k               81
#>  5 Agnostic $40-50k               76
#>  6 Agnostic $50-75k              137
#>  7 Agnostic $75-100k             122
#>  8 Agnostic $100-150k            109
#>  9 Agnostic >150k                 84
#> 10 Agnostic Don't know/refused    96
#> # โ€ฆ with 170 more rows

เดซเด‚เด—เตเดทเตป เด†เตผเด—เตเดฏเตเดฎเต†เตปเตเดฑเตเด•เตพ pivot_longer()

  • เด†เดฆเตเดฏเดคเตเดคเต† เดตเดพเดฆเด‚ เด•เต‹เดณเตเด•เตพ, เดเดคเต เดจเดฟเดฐเด•เดณเดพเดฃเต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดจเดฟเดฐเด•เดณเตเด‚ เด•เดพเดฒเด‚.
  • เดตเดพเดฆเด‚ เดชเต‡เดฐเตเด•เตพ_เดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดš เดจเดฟเดฐเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตปเตเดฑเต† เดชเต‡เดฐเต เดจเตฝเด•เตเดจเตเดจเต.
  • เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ_เดŸเต เดฒเดฏเดฟเดชเตเดชเดฟเดšเตเดš เดจเดฟเดฐเด•เดณเตเดŸเต† เดธเต†เดฒเตเดฒเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตปเตเดฑเต† เดชเต‡เดฐเต เดจเตฝเด•เตเดจเตเดจเต.

เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เตพ

เด‡เดคเต เดชเดพเด•เตเด•เต‡เดœเดฟเตปเตเดฑเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ, เดฒเต†เด—เดธเดฟ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เดฎเตเดฎเตเดชเต เดฒเดญเตเดฏเดฎเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เด’เดฐเต เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดŽเดจเตเดจเดคเต เด’เดฐเต เดกเดพเดฑเตเดฑ เดซเตเดฐเต†เดฏเดฟเดฎเดพเดฃเต, เด…เดคเดฟเดฒเต† เด“เดฐเต‹ เดตเดฐเดฟเดฏเตเด‚ เดชเตเดคเดฟเดฏ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเดฟเดฒเต† เด’เดฐเต เดจเดฟเดฐเดฏเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เดชเตเดฐเดคเตเดฏเต‡เด• เดจเดฟเดฐเด•เตพ:

  • เดจเดพเดฎเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • .เดฎเต‚เดฒเตเดฏเด‚ เดธเต†เตฝ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เดจเดฟเดฐเดฏเตเดŸเต† เดชเต‡เดฐเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเด•เตพ, เดชเตเดคเดฟเดฏ เด•เต‹เดณเด‚ เดŽเด™เตเด™เดจเต† เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดค เด•เต‹เดณเด™เตเด™เดณเตเดŸเต† เดชเต‡เดฐเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต เดจเดพเดฎเด‚.

เดธเตโ€Œเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เด’เดฐเต เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑเดฏเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด“เดฐเต‹ เด•เต‹เดณเดคเตเดคเดฟเดจเตเด‚ เด’เดฐเต เดตเดฐเดฟเดฏเตเด‚ เด“เดฐเต‹ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเด‚ เด’เดฐเต เด•เต‹เดณเดตเตเด‚, เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เด•เต‚เดŸเดฟเดšเตเดšเต‡เตผเดจเตเดจเต, เดˆ เดจเดฟเตผเดตเตเดตเดšเดจเด‚ เด‡เดชเตเดชเต‹เตพ เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดฎเตเดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเดฟเดฏเต‡เด•เตเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เด•เตเดฑเดšเตเดšเต เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฎเดพเดฑเตเด‚. เด•เต‚เดŸเตเดคเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต.

เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเต†เดฏเดฟเดฎเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดคเดฟเดฏ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดพเดจเตเด‚ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ เดŽเดจเตเดจเดคเดพเดฃเต เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เด•เดพเดฐเตเดฏเด‚.

เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดจเต€เดฃเตเดŸ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป, เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• pivot_longer_spec().

เดˆ เดซเด‚เด—เตโ€Œเดทเตป เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดเดคเต เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเด‚ เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ เด…เดคเดฟเตปเตเดฑเต† เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต.

เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดชเดพเด•เตเด•เต‡เดœเดฟเดจเตŠเดชเตเดชเด‚ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดนเต‚ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เดŽเดŸเตเด•เตเด•เดพเด‚ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ. เดˆ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเดฟเตฝ เด•เตเดทเดฏเดฐเต‹เด—เดฌเดพเดงเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดจเตเดคเดพเดฐเดพเดทเตเดŸเตเดฐ เด†เดฐเต‹เด—เตเดฏ เดธเด‚เด˜เดŸเดจ เดจเตฝเด•เตเดจเตเดจ เดตเดฟเดตเดฐเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

who
#> # A tibble: 7,240 x 60
#>    country iso2  iso3   year new_sp_m014 new_sp_m1524 new_sp_m2534
#>    <chr>   <chr> <chr> <int>       <int>        <int>        <int>
#>  1 Afghanโ€ฆ AF    AFG    1980          NA           NA           NA
#>  2 Afghanโ€ฆ AF    AFG    1981          NA           NA           NA
#>  3 Afghanโ€ฆ AF    AFG    1982          NA           NA           NA
#>  4 Afghanโ€ฆ AF    AFG    1983          NA           NA           NA
#>  5 Afghanโ€ฆ AF    AFG    1984          NA           NA           NA
#>  6 Afghanโ€ฆ AF    AFG    1985          NA           NA           NA
#>  7 Afghanโ€ฆ AF    AFG    1986          NA           NA           NA
#>  8 Afghanโ€ฆ AF    AFG    1987          NA           NA           NA
#>  9 Afghanโ€ฆ AF    AFG    1988          NA           NA           NA
#> 10 Afghanโ€ฆ AF    AFG    1989          NA           NA           NA
#> # โ€ฆ with 7,230 more rows, and 53 more variables

เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเตปเตเดฑเต† เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเด‚.

spec <- who %>%
  pivot_longer_spec(new_sp_m014:newrel_f65, values_to = "count")

#> # A tibble: 56 x 3
#>    .name        .value name        
#>    <chr>        <chr>  <chr>       
#>  1 new_sp_m014  count  new_sp_m014 
#>  2 new_sp_m1524 count  new_sp_m1524
#>  3 new_sp_m2534 count  new_sp_m2534
#>  4 new_sp_m3544 count  new_sp_m3544
#>  5 new_sp_m4554 count  new_sp_m4554
#>  6 new_sp_m5564 count  new_sp_m5564
#>  7 new_sp_m65   count  new_sp_m65  
#>  8 new_sp_f014  count  new_sp_f014 
#>  9 new_sp_f1524 count  new_sp_f1524
#> 10 new_sp_f2534 count  new_sp_f2534
#> # โ€ฆ with 46 more rows

เดจเดฟเดฒเด™เตเด™เดณเตเด‚ เดฐเดพเดœเตเดฏเด‚, เด‡เดธเตŠเด•เตเดธเดจเตเดฎเตเด•เตเดธ, เด‡เดธเตŠเด•เตเดธเดจเตเดฎเตเด•เตเดธ เด‡เดคเดฟเดจเด•เด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดพเดฃเต. เด•เต‹เดณเด™เตเด™เตพ เดซเตเดฒเดฟเดชเตเดชเตเดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดšเตเดฎเดคเดฒ new_sp_m014 เด† เดธเดฎเดฏเดคเตเดคเต newrel_f65.

เดˆ เดจเดฟเดฐเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เด‰เดชเดธเตผเด—เตเด—เด‚ new_ เด•เต‹เดณเดคเตเดคเดฟเตฝ เด•เตเดทเดฏเดฐเต‹เด—เดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดคเดฟเดฏ เด•เต‡เดธเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฟเดฒเดตเดฟเดฒเต† เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเดฟเตฝ เดชเตเดคเดฟเดฏ เดฐเต‹เด—เด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเดฒเดตเดฟเดฒเต† เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดฒเต† เดˆ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเดฟเดจเต เด…เตผเดคเตเดฅเดฎเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ.
  • sp/rel/sp/ep เด’เดฐเต เดฐเต‹เด—เด‚ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฐเต€เดคเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • m/f เดฐเต‹เด—เดฟเดฏเตเดŸเต† เดฒเดฟเด‚เด—เดญเต‡เดฆเด‚.
  • 014/1524/2535/3544/4554/65 เดฐเต‹เด—เดฟเดฏเตเดŸเต† เดชเตเดฐเดพเดฏเดชเดฐเดฟเดงเดฟ.

เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เดˆ เดจเดฟเดฐเด•เตพ เดตเดฟเดญเดœเดฟเด•เตเด•เดพเด‚ extract()เดชเดคเดฟเดตเต เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

spec <- spec %>%
        extract(name, c("diagnosis", "gender", "age"), "new_?(.*)_(.)(.*)")

#> # A tibble: 56 x 5
#>    .name        .value diagnosis gender age  
#>    <chr>        <chr>  <chr>     <chr>  <chr>
#>  1 new_sp_m014  count  sp        m      014  
#>  2 new_sp_m1524 count  sp        m      1524 
#>  3 new_sp_m2534 count  sp        m      2534 
#>  4 new_sp_m3544 count  sp        m      3544 
#>  5 new_sp_m4554 count  sp        m      4554 
#>  6 new_sp_m5564 count  sp        m      5564 
#>  7 new_sp_m65   count  sp        m      65   
#>  8 new_sp_f014  count  sp        f      014  
#>  9 new_sp_f1524 count  sp        f      1524 
#> 10 new_sp_f2534 count  sp        f      2534 
#> # โ€ฆ with 46 more rows

เด•เต‹เดณเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• เดจเดพเดฎเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเดฟเตปเตเดฑเต† เด•เต‹เดณเด‚ เดจเดพเดฎเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดธเต‚เดšเดฟเด•เดฏเดพเดฏเดคเดฟเดจเดพเตฝ เด‡เดคเต เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเต† เดคเตเดŸเดฐเดฃเด‚.

เดฒเดฟเด‚เด—เดญเต‡เดฆเดตเตเด‚ เดชเตเดฐเดพเดฏเดตเตเด‚ (เดจเดฟเดฐเด•เตพ เดฒเดฟเด‚เด—เดญเต‡เดฆเด‚ ะธ เดชเตเดฐเดพเดฏเด‚) เดธเตเดฅเดฟเดฐเดตเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเตเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดˆ เดจเดฟเดฐเด•เดณเต† เด˜เดŸเด•เด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

spec <-  spec %>%
            mutate(
              gender = factor(gender, levels = c("f", "m")),
              age = factor(age, levels = unique(age), ordered = TRUE)
            ) 

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดฏเดฅเดพเตผเดคเตเดฅ เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดฐเต เดžเด™เตเด™เตพ เด’เดฐเต เดตเดพเดฆเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดธเตเดชเต†เด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ pivot_longer().

who %>% pivot_longer(spec = spec)

#> # A tibble: 405,440 x 8
#>    country     iso2  iso3   year diagnosis gender age   count
#>    <chr>       <chr> <chr> <int> <chr>     <fct>  <ord> <int>
#>  1 Afghanistan AF    AFG    1980 sp        m      014      NA
#>  2 Afghanistan AF    AFG    1980 sp        m      1524     NA
#>  3 Afghanistan AF    AFG    1980 sp        m      2534     NA
#>  4 Afghanistan AF    AFG    1980 sp        m      3544     NA
#>  5 Afghanistan AF    AFG    1980 sp        m      4554     NA
#>  6 Afghanistan AF    AFG    1980 sp        m      5564     NA
#>  7 Afghanistan AF    AFG    1980 sp        m      65       NA
#>  8 Afghanistan AF    AFG    1980 sp        f      014      NA
#>  9 Afghanistan AF    AFG    1980 sp        f      1524     NA
#> 10 Afghanistan AF    AFG    1980 sp        f      2534     NA
#> # โ€ฆ with 405,430 more rows

เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดšเต†เดฏเตเดคเดคเต†เดฒเตเดฒเดพเด‚ เดธเตเด•เต€เดฎเดพเดฑเตเดฑเดฟเด•เตเด•เดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดšเดฟเดคเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเด‚:

R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป (.value)

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดณเด‚ .เดฎเต‚เดฒเตเดฏเด‚ เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚, เดฎเดฟเด•เตเด• เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เด‡เดคเต เด…เด™เตเด™เดจเต†เดฏเดพเดฃเต.

เดŽเดจเตเดจเดพเตฝ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑ เดคเดฐเด™เตเด™เดณเตเดณเตเดณ เด•เต‹เดณเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ เดšเดฟเดฒเดชเตเดชเต‹เตพ เด’เดฐเต เดธเดพเดนเดšเดฐเตเดฏเด‚ เด‰เดฃเตเดŸเดพเด•เดพเด‚. เด’เดฐเต เดฒเต†เด—เดธเดฟ เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต spread() เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดตเดณเดฐเต† เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดŽเดŸเตเดคเตเดคเดคเต เดตเดฟเด—เตเดจเต†เดฑเตเดฑเตเด•เตพ เดชเดพเด•เตเด•เต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ. เดชเดŸเตเดŸเดฟเด•.

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเดฐเดฟเดถเต€เดฒเดจ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเต†เดฏเดฟเด‚ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚.

family <- tibble::tribble(
  ~family,  ~dob_child1,  ~dob_child2, ~gender_child1, ~gender_child2,
       1L, "1998-11-26", "2000-01-29",             1L,             2L,
       2L, "1996-06-22",           NA,             2L,             NA,
       3L, "2002-07-11", "2004-04-05",             2L,             2L,
       4L, "2004-10-10", "2009-08-27",             1L,             1L,
       5L, "2000-12-05", "2005-02-28",             2L,             1L,
)
family <- family %>% mutate_at(vars(starts_with("dob")), parse_date)

#> # A tibble: 5 x 5
#>   family dob_child1 dob_child2 gender_child1 gender_child2
#>    <int> <date>     <date>             <int>         <int>
#> 1      1 1998-11-26 2000-01-29             1             2
#> 2      2 1996-06-22 NA                     2            NA
#> 3      3 2002-07-11 2004-04-05             2             2
#> 4      4 2004-10-10 2009-08-27             1             1
#> 5      5 2000-12-05 2005-02-28             2             1

เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเดฟเตฝ เด“เดฐเต‹ เดตเดฐเดฟเดฏเดฟเดฒเตเด‚ เด’เดฐเต เด•เตเดŸเตเด‚เดฌเดคเตเดคเดฟเดฒเต† เด•เตเดŸเตเดŸเดฟเด•เดณเตเดŸเต† เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดŸเตเด‚เดฌเดคเตเดคเดฟเตฝ เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เด•เตเดŸเตเดŸเดฟเด•เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚. เด“เดฐเต‹ เด•เตเดŸเตเดŸเดฟเด•เตเด•เตเด‚, เดœเดจเดจเดคเตเดคเต€เดฏเดคเดฟเดฏเต†เดฏเตเด‚ เดฒเดฟเด‚เด—เดญเต‡เดฆเดคเตเดคเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด“เดฐเต‹ เด•เตเดŸเตเดŸเดฟเด•เตเด•เตเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดจเดฟเดฐเด•เดณเดฟเดฒเดพเดฃเต.

เด“เดฐเต‹ เด•เตเดŸเตเดŸเดฟเดฏเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดณเตเดณ เดฐเดฃเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดžเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เดฒเตเดฃเตเดŸเต†เดจเตเดจ เด•เดพเดฐเตเดฏเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•: เด…เดตเดฐเตเดŸเต† เดฒเดฟเด‚เด—เดญเต‡เดฆเดตเตเด‚ เดœเดจเดจเดคเตเดคเต€เดฏเดคเดฟเดฏเตเด‚ (เดชเตเดฐเดฟเดซเดฟเด•เตเดธเตเดณเตเดณ เดจเดฟเดฐเด•เตพ เดกเต‹เดชเตเดชเต เดœเดจเดจเดคเตเดคเต€เดฏเดคเดฟ, เดชเตเดฐเดฟเดซเดฟเด•เตเดธเตเดณเตเดณ เดจเดฟเดฐเด•เตพ เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดฒเดฟเด‚เด—เดญเต‡เดฆเด‚ เด•เตเดŸเตเดŸเดฟเดฏเตเดŸเต† เดฒเตˆเด‚เด—เดฟเด•เดค เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต). เด…เดต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เดณเด™เตเด™เดณเดฟเตฝ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดฎเต†เดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดš เดซเดฒเด‚. เด•เต‹เดณเด‚ เด‰เดณเตเดณ เด’เดฐเต เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ .value เดฐเดฃเตเดŸเต เดตเตเดฏเดคเตเดฏเดธเตเดค เด…เตผเดคเตเดฅเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด‚.

spec <- family %>%
  pivot_longer_spec(-family) %>%
  separate(col = name, into = c(".value", "child"))%>%
  mutate(child = parse_number(child))

#> # A tibble: 4 x 3
#>   .name         .value child
#>   <chr>         <chr>  <dbl>
#> 1 dob_child1    dob        1
#> 2 dob_child2    dob        2
#> 3 gender_child1 gender     1
#> 4 gender_child2 gender     2

เด…เดคเดฟเดจเดพเตฝ, เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด•เต‹เดกเต เดจเดŸเดคเตเดคเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚.

  • pivot_longer_spec(-family) โ€” เดซเดพเดฎเดฟเดฒเดฟ เด•เต‹เดณเด‚ เด’เดดเดฟเด•เต† เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด•เต‹เดณเด™เตเด™เดณเตเด‚ เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.
  • separate(col = name, into = c(".value", "child")) - เด•เต‹เดณเด‚ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด• เดจเดพเดฎเด‚, เด…เดฃเตเดŸเตผ เดธเตโ€Œเด•เต‹เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต‹เดดเตโ€Œเดธเต เดซเต€เตฝเดกเตเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เตพ เด…เดŸเด™เตเด™เตเดจเตเดจ, เดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเดฟเดฐเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดจเตฝเด•เตเด• .เดฎเต‚เดฒเตเดฏเด‚ ะธ เด•เตเดŸเตเดŸเดฟ.
  • mutate(child = parse_number(child)) - เดซเต€เตฝเดกเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด• เด•เตเดŸเตเดŸเดฟ เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดฎเตเดคเตฝ เดธเด‚เด–เตเดฏเดพ เดกเดพเดฑเตเดฑ เดคเดฐเด‚ เดตเดฐเต†.

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดฏเดฅเดพเตผเดคเตเดฅ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเต†เดฏเดฟเดฎเดฟเดฒเต‡เด•เตเด•เต เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดชเดŸเตเดŸเดฟเด• เด•เตŠเดฃเตเดŸเตเดตเดฐเดพเด‚.

family %>% 
    pivot_longer(spec = spec, na.rm = T)

#> # A tibble: 9 x 4
#>   family child dob        gender
#>    <int> <dbl> <date>      <int>
#> 1      1     1 1998-11-26      1
#> 2      1     2 2000-01-29      2
#> 3      2     1 1996-06-22      2
#> 4      3     1 2002-07-11      2
#> 5      3     2 2004-04-05      2
#> 6      4     1 2004-10-10      1
#> 7      4     2 2009-08-27      1
#> 8      5     1 2000-12-05      2
#> 9      5     2 2005-02-28      1

เดžเด™เตเด™เตพ เดตเดพเดฆเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต na.rm = TRUE, เด•เดพเดฐเดฃเด‚ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดฐเต‚เดชเด‚ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเดพเดคเตเดค เดจเดฟเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด…เดงเดฟเด• เดตเดฐเดฟเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดชเตเดฐเต‡เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดพเดฐเดฃเด‚ เด•เตเดŸเตเด‚เดฌเด‚ 2 เดจเต เด’เดฐเต เด•เตเดŸเตเดŸเดฟ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚, na.rm = TRUE เดซเดพเดฎเดฟเดฒเดฟ 2 เดจเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเตฝ เด’เดฐเต เดตเดฐเดฟ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเต เดจเตฝเด•เตเดจเตเดจเต.

เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเตเด•เตพ เดจเต€เดณเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตˆเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

pivot_wider() - เดตเดฟเดชเดฐเต€เดค เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚, เดตเดฐเดฟเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเดฎเดฟเตปเตเดฑเต† เดจเดฟเดฐเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดคเดฟเดฐเดฟเดšเตเดšเตเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

R เดชเดพเด•เตเด•เต‡เดœเต tidyr เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ pivot_longer, pivot_wider

เดกเดพเดฑเตเดฑเดฏเต† เด•เตƒเดคเตเดฏเดฎเดพเดฏ เดฐเต‚เดชเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดตเดฐเดพเตป เด‡เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดตเดณเดฐเต† เด…เดชเต‚เตผเดตเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด…เดตเดคเดฐเดฃเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเดฟเดตเดฑเตเดฑเต เดชเดŸเตเดŸเดฟเด•เด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เดฎเดฑเตเดฑเต เดšเดฟเดฒ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚.

เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ pivot_longer() ะธ pivot_wider() เดธเดฎเดฎเดฟเดคเดฟเดฏเดพเดฃเต, เดชเดฐเดธเตเดชเดฐเด‚ เดตเดฟเดชเดฐเต€เดคเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต: df %>% pivot_longer(spec = spec) %>% pivot_wider(spec = spec) ะธ df %>% pivot_wider(spec = spec) %>% pivot_longer(spec = spec) เดฏเดฅเดพเตผเดคเตเดฅ df เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด‚.

เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเต† เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚

เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เดพเตป pivot_wider() เดžเด™เตเด™เตพ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ เดฎเต€เตป_เดเดฑเตเดฑเตเดฎเตเดŸเตเดŸเดฒเตเด•เตพ, เดจเดฆเดฟเดฏเดฟเดฒเต‚เดŸเต†เดฏเตเดณเตเดณ เดฎเดคเตเดธเตเดฏเด™เตเด™เดณเตเดŸเต† เดšเดฒเดจเด‚ เดตเดฟเดตเดฟเดง เดธเตเดฑเตเดฑเต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

#> # A tibble: 114 x 3
#>    fish  station  seen
#>    <fct> <fct>   <int>
#>  1 4842  Release     1
#>  2 4842  I80_1       1
#>  3 4842  Lisbon      1
#>  4 4842  Rstr        1
#>  5 4842  Base_TD     1
#>  6 4842  BCE         1
#>  7 4842  BCW         1
#>  8 4842  BCE2        1
#>  9 4842  BCW2        1
#> 10 4842  MAE         1
#> # โ€ฆ with 104 more rows

เดฎเดฟเด•เตเด• เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚, เด“เดฐเต‹ เดธเตเดฑเตเดฑเต‡เดทเตปเตเดฑเต†เดฏเตเด‚ เดตเดฟเดตเดฐเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เดณเดคเตเดคเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เดˆ เดชเดŸเตเดŸเดฟเด• เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดœเตเดžเดพเดจเดชเตเดฐเดฆเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดตเตเดฎเดพเด•เตเด‚.

fish_encounters %>% pivot_wider(names_from = station, values_from = seen)

fish_encounters %>% pivot_wider(names_from = station, values_from = seen)
#> # A tibble: 19 x 12
#>    fish  Release I80_1 Lisbon  Rstr Base_TD   BCE   BCW  BCE2  BCW2   MAE
#>    <fct>   <int> <int>  <int> <int>   <int> <int> <int> <int> <int> <int>
#>  1 4842        1     1      1     1       1     1     1     1     1     1
#>  2 4843        1     1      1     1       1     1     1     1     1     1
#>  3 4844        1     1      1     1       1     1     1     1     1     1
#>  4 4845        1     1      1     1       1    NA    NA    NA    NA    NA
#>  5 4847        1     1      1    NA      NA    NA    NA    NA    NA    NA
#>  6 4848        1     1      1     1      NA    NA    NA    NA    NA    NA
#>  7 4849        1     1     NA    NA      NA    NA    NA    NA    NA    NA
#>  8 4850        1     1     NA     1       1     1     1    NA    NA    NA
#>  9 4851        1     1     NA    NA      NA    NA    NA    NA    NA    NA
#> 10 4854        1     1     NA    NA      NA    NA    NA    NA    NA    NA
#> # โ€ฆ with 9 more rows, and 1 more variable: MAW <int>

เดˆ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเต เดธเตโ€Œเดฑเตเดฑเต‡เดทเตป เดฎเดคเตเดธเตเดฏเดคเตเดคเต† เด•เดฃเตเดŸเต†เดคเตเดคเตเดฎเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเดณเตเดณเต‚, เด…เดคเดพเดฏเดคเต. เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดคเตเดธเตเดฏเด‚ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเตเดฑเตเดฑเต‡เดทเดจเดฟเตฝ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดˆ เดกเดพเดฑเตเดฑ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด‰เดฃเตเดŸเดพเด•เดฟเดฒเตเดฒ. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต NA เด•เตŠเดฃเตเดŸเต เดจเดฟเดฑเดฏเตเดฎเต†เดจเตเดจเดพเดฃเต.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เด•เต‡เดธเดฟเตฝ เด’เดฐเต เดฐเต‡เด–เดฏเตเดŸเต† เด…เดญเดพเดตเด‚ เดฎเดคเตเดธเตเดฏเด‚ เด•เดฃเตเดŸเดฟเดฒเตเดฒ เดŽเดจเตเดจเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เดตเดพเดฆเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ_เดซเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ pivot_wider() เด•เต‚เดŸเดพเดคเต† เดˆ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดชเต‚เดœเตเดฏเด™เตเด™เตพ เด•เตŠเดฃเตเดŸเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

fish_encounters %>% pivot_wider(
  names_from = station, 
  values_from = seen,
  values_fill = list(seen = 0)
)

#> # A tibble: 19 x 12
#>    fish  Release I80_1 Lisbon  Rstr Base_TD   BCE   BCW  BCE2  BCW2   MAE
#>    <fct>   <int> <int>  <int> <int>   <int> <int> <int> <int> <int> <int>
#>  1 4842        1     1      1     1       1     1     1     1     1     1
#>  2 4843        1     1      1     1       1     1     1     1     1     1
#>  3 4844        1     1      1     1       1     1     1     1     1     1
#>  4 4845        1     1      1     1       1     0     0     0     0     0
#>  5 4847        1     1      1     0       0     0     0     0     0     0
#>  6 4848        1     1      1     1       0     0     0     0     0     0
#>  7 4849        1     1      0     0       0     0     0     0     0     0
#>  8 4850        1     1      0     1       1     1     1     0     0     0
#>  9 4851        1     1      0     0       0     0     0     0     0     0
#> 10 4854        1     1      0     0       0     0     0     0     0     0
#> # โ€ฆ with 9 more rows, and 1 more variable: MAW <int>

เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดธเต‹เดดเตเดธเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด‰เตฝเดชเตเดชเดจเตเดจเด‚, เดฐเดพเดœเตเดฏเด‚, เดตเตผเดทเด‚ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดžเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เดฒเตเดฃเตเดŸเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•. เด’เดฐเต เดŸเต†เดธเตเดฑเตเดฑเต เดคเต€เดฏเดคเดฟ เดซเตเดฐเต†เดฏเดฟเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚:

df <- expand_grid(
  product = c("A", "B"), 
  country = c("AI", "EI"), 
  year = 2000:2014
) %>%
  filter((product == "A" & country == "AI") | product == "B") %>% 
  mutate(value = rnorm(nrow(.)))

#> # A tibble: 45 x 4
#>    product country  year    value
#>    <chr>   <chr>   <int>    <dbl>
#>  1 A       AI       2000 -2.05   
#>  2 A       AI       2001 -0.676  
#>  3 A       AI       2002  1.60   
#>  4 A       AI       2003 -0.353  
#>  5 A       AI       2004 -0.00530
#>  6 A       AI       2005  0.442  
#>  7 A       AI       2006 -0.610  
#>  8 A       AI       2007 -2.77   
#>  9 A       AI       2008  0.899  
#> 10 A       AI       2009 -0.106  
#> # โ€ฆ with 35 more rows

เดžเด™เตเด™เดณเตเดŸเต† เดšเตเดฎเดคเดฒ เดกเดพเดฑเตเดฑ เดซเตเดฐเต†เดฏเดฟเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด…เดคเดฟเดฒเต‚เดŸเต† เด’เดฐเต เด•เต‹เดณเดคเตเดคเดฟเตฝ เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดฐเดพเดœเตเดฏเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เด“เดฐเต‹ เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเดจเตเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดตเดพเดฆเดคเตเดคเดฟเตฝ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเด• เดชเต‡เดฐเตเด•เตพ_เดจเดฟเดจเตเดจเต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ เดซเต€เตฝเดกเตเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏ เด’เดฐเต เดตเต†เด•เตเดฑเตเดฑเตผ.

df %>% pivot_wider(names_from = c(product, country),
                 values_from = "value")

#> # A tibble: 15 x 4
#>     year     A_AI    B_AI    B_EI
#>    <int>    <dbl>   <dbl>   <dbl>
#>  1  2000 -2.05     0.607   1.20  
#>  2  2001 -0.676    1.65   -0.114 
#>  3  2002  1.60    -0.0245  0.501 
#>  4  2003 -0.353    1.30   -0.459 
#>  5  2004 -0.00530  0.921  -0.0589
#>  6  2005  0.442   -1.55    0.594 
#>  7  2006 -0.610    0.380  -1.28  
#>  8  2007 -2.77     0.830   0.637 
#>  9  2008  0.899    0.0175 -1.30  
#> 10  2009 -0.106   -0.195   1.03  
#> # โ€ฆ with 5 more rows

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ pivot_wider(). เดŽเดจเตเดจเดพเตฝ เดธเดฎเตผเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ pivot_wider() เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดชเดฐเต€เดค เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต pivot_longer(): เตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดจเดฟเดฐเด•เตพ เดจเดพเดฎเด‚, เดŽเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต .เดฎเต‚เดฒเตเดฏเด‚ เดฎเดฑเตเดฑเต เดจเดฟเดฐเด•เดณเตเด‚.

เดˆ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเดฟเดจเดพเดฏเดฟ, เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เด‰เดณเตเดณเดต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดธเดพเดงเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดฐเดพเดœเตเดฏเด™เตเด™เตพเด•เตเด•เตเด‚ เด‰เตฝเดชเตเดชเดจเตเดจ เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเดจเตเด‚ เด…เดคเดฟเตปเตเดฑเต‡เดคเดพเดฏ เด•เต‹เดณเด‚ เดตเต‡เดฃเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:

spec <- df %>% 
  expand(product, country, .value = "value") %>% 
  unite(".name", product, country, remove = FALSE)

#> # A tibble: 4 x 4
#>   .name product country .value
#>   <chr> <chr>   <chr>   <chr> 
#> 1 A_AI  A       AI      value 
#> 2 A_EI  A       EI      value 
#> 3 B_AI  B       AI      value 
#> 4 B_EI  B       EI      value

df %>% pivot_wider(spec = spec) %>% head()

#> # A tibble: 6 x 5
#>    year     A_AI  A_EI    B_AI    B_EI
#>   <int>    <dbl> <dbl>   <dbl>   <dbl>
#> 1  2000 -2.05       NA  0.607   1.20  
#> 2  2001 -0.676      NA  1.65   -0.114 
#> 3  2002  1.60       NA -0.0245  0.501 
#> 4  2003 -0.353      NA  1.30   -0.459 
#> 5  2004 -0.00530    NA  0.921  -0.0589
#> 6  2005  0.442      NA -1.55    0.594

เดชเตเดคเดฟเดฏ tidyr เด†เดถเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดตเดฟเดชเตเดฒเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ

เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดฏเตเดŽเดธเต เดธเต†เตปเดธเดธเต เดตเดฐเตเดฎเดพเดจเดตเตเด‚ เดตเดพเดŸเด• เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดพเดฑเตเดฑ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตฝ.

เดกเดพเดฑเตเดฑ เดธเต†เดฑเตเดฑเต เดžเด™เตเด™เตพเด•เตเด•เต_เดตเดพเดŸเด•_เดตเดฐเตเดฎเดพเดจเด‚ 2017-เดฒเต† เดฏเตเดŽเดธเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดธเด‚เดธเตเดฅเดพเดจเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดถเดฐเดพเดถเดฐเดฟ เดตเดฐเตเดฎเดพเดจเดตเตเด‚ เดตเดพเดŸเด• เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดธเต†เดฑเตเดฑเต tidycensus).

us_rent_income
#> # A tibble: 104 x 5
#>    GEOID NAME       variable estimate   moe
#>    <chr> <chr>      <chr>       <dbl> <dbl>
#>  1 01    Alabama    income      24476   136
#>  2 01    Alabama    rent          747     3
#>  3 02    Alaska     income      32940   508
#>  4 02    Alaska     rent         1200    13
#>  5 04    Arizona    income      27517   148
#>  6 04    Arizona    rent          972     4
#>  7 05    Arkansas   income      23789   165
#>  8 05    Arkansas   rent          709     5
#>  9 06    California income      29454   109
#> 10 06    California rent         1358     3
#> # โ€ฆ with 94 more rows

เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต_เดตเดพเดŸเด•_เดตเดฐเตเดฎเดพเดจเด‚ เด…เดตเดฐเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เด™เตเด™เต‡เดฏเดฑเตเดฑเด‚ เด…เดธเต—เด•เดฐเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด•เต‹เดณเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดกเดพเดฑเตเดฑ เดธเต†เดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต: เดตเดพเดŸเด•, เดตเดพเดŸเด•_เดฎเต‹, เดตเดฐเตเด•, เดตเดฐเตเดฎเดพเดจเด‚_เดฎเต‹. เดˆ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต. เดŽเดธเตเดฑเตเดฑเดฟเดฎเต‡เดฑเตเดฑเต/เดฎเต‹เดคเตเดŸเตผเดจเตเดจเต เด•เต‹เดณเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‡เดฐเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

  spec <- us_rent_income %>% 
    expand(variable, .value = c("estimate", "moe")) %>% 
    mutate(
      .name = paste0(variable, ifelse(.value == "moe", "_moe", ""))
    )

#> # A tibble: 4 x 3
#>   variable .value   .name     
#>   <chr>    <chr>    <chr>     
#> 1 income   estimate income    
#> 2 income   moe      income_moe
#> 3 rent     estimate rent      
#> 4 rent     moe      rent_moe

เดˆ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดจเตฝเด•เตเดจเตเดจเต pivot_wider() เดžเด™เตเด™เตพ เดคเดฟเดฐเดฏเตเดจเตเดจ เดซเดฒเด‚ เดจเตฝเด•เตเดจเตเดจเต:

us_rent_income %>% pivot_wider(spec = spec)

#> # A tibble: 52 x 6
#>    GEOID NAME                 income income_moe  rent rent_moe
#>    <chr> <chr>                 <dbl>      <dbl> <dbl>    <dbl>
#>  1 01    Alabama               24476        136   747        3
#>  2 02    Alaska                32940        508  1200       13
#>  3 04    Arizona               27517        148   972        4
#>  4 05    Arkansas              23789        165   709        5
#>  5 06    California            29454        109  1358        3
#>  6 08    Colorado              32401        109  1125        5
#>  7 09    Connecticut           35326        195  1123        5
#>  8 10    Delaware              31560        247  1076       10
#>  9 11    District of Columbia  43198        681  1424       17
#> 10 12    Florida               25952         70  1077        3
#> # โ€ฆ with 42 more rows

เดฒเต‹เด•เดฌเดพเด™เตเด•เต

เดšเดฟเดฒเดชเตเดชเต‹เตพ เด’เดฐเต เดกเดพเดฑเตเดฑ เดธเต†เดฑเตเดฑเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เด˜เดŸเตเดŸเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เดฒเต‹เด•_เดฌเดพเด™เตเด•เต_เดชเต‹เดชเตเดชเต 2000-เดจเตเด‚ 2018-เดจเตเด‚ เด‡เดŸเดฏเดฟเดฒเตเดณเตเดณ เด“เดฐเต‹ เดฐเดพเดœเตเดฏเดคเตเดคเต†เดฏเตเด‚ เดœเดจเดธเด‚เด–เตเดฏเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฒเต‹เด•เดฌเดพเด™เตเด•เต เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

#> # A tibble: 1,056 x 20
#>    country indicator `2000` `2001` `2002` `2003`  `2004`  `2005`   `2006`
#>    <chr>   <chr>      <dbl>  <dbl>  <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
#>  1 ABW     SP.URB.Tโ€ฆ 4.24e4 4.30e4 4.37e4 4.42e4 4.47e+4 4.49e+4  4.49e+4
#>  2 ABW     SP.URB.Gโ€ฆ 1.18e0 1.41e0 1.43e0 1.31e0 9.51e-1 4.91e-1 -1.78e-2
#>  3 ABW     SP.POP.Tโ€ฆ 9.09e4 9.29e4 9.50e4 9.70e4 9.87e+4 1.00e+5  1.01e+5
#>  4 ABW     SP.POP.Gโ€ฆ 2.06e0 2.23e0 2.23e0 2.11e0 1.76e+0 1.30e+0  7.98e-1
#>  5 AFG     SP.URB.Tโ€ฆ 4.44e6 4.65e6 4.89e6 5.16e6 5.43e+6 5.69e+6  5.93e+6
#>  6 AFG     SP.URB.Gโ€ฆ 3.91e0 4.66e0 5.13e0 5.23e0 5.12e+0 4.77e+0  4.12e+0
#>  7 AFG     SP.POP.Tโ€ฆ 2.01e7 2.10e7 2.20e7 2.31e7 2.41e+7 2.51e+7  2.59e+7
#>  8 AFG     SP.POP.Gโ€ฆ 3.49e0 4.25e0 4.72e0 4.82e0 4.47e+0 3.87e+0  3.23e+0
#>  9 AGO     SP.URB.Tโ€ฆ 8.23e6 8.71e6 9.22e6 9.77e6 1.03e+7 1.09e+7  1.15e+7
#> 10 AGO     SP.URB.Gโ€ฆ 5.44e0 5.59e0 5.70e0 5.76e0 5.75e+0 5.69e+0  4.92e+0
#> # โ€ฆ with 1,046 more rows, and 11 more variables: `2007` <dbl>,
#> #   `2008` <dbl>, `2009` <dbl>, `2010` <dbl>, `2011` <dbl>, `2012` <dbl>,
#> #   `2013` <dbl>, `2014` <dbl>, `2015` <dbl>, `2016` <dbl>, `2017` <dbl>

เด“เดฐเต‹ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเด‚ เด…เดคเดฟเตปเตเดฑเต‡เดคเดพเดฏ เด•เต‹เดณเดคเตเดคเดฟเตฝ เด’เดฐเต เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดฒเด•เตเดทเตเดฏเด‚. เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดŽเดจเตเดคเต†เดฒเตเดฒเดพเด‚ เด˜เดŸเตเดŸเด™เตเด™เดณเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดเดฑเตเดฑเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚: เดตเตผเดทเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดจเดฟเดฐเด•เดณเดฟเตฝ เดตเตเดฏเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต pivot_longer().

pop2 <- world_bank_pop %>% 
  pivot_longer(`2000`:`2017`, names_to = "year")

#> # A tibble: 19,008 x 4
#>    country indicator   year  value
#>    <chr>   <chr>       <chr> <dbl>
#>  1 ABW     SP.URB.TOTL 2000  42444
#>  2 ABW     SP.URB.TOTL 2001  43048
#>  3 ABW     SP.URB.TOTL 2002  43670
#>  4 ABW     SP.URB.TOTL 2003  44246
#>  5 ABW     SP.URB.TOTL 2004  44669
#>  6 ABW     SP.URB.TOTL 2005  44889
#>  7 ABW     SP.URB.TOTL 2006  44881
#>  8 ABW     SP.URB.TOTL 2007  44686
#>  9 ABW     SP.URB.TOTL 2008  44375
#> 10 ABW     SP.URB.TOTL 2009  44052
#> # โ€ฆ with 18,998 more rows

เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚ เด‡เตปเดกเดฟเด•เตเด•เต‡เดฑเตเดฑเตผ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดจเต‹เด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต.
pop2 %>% count(indicator)

#> # A tibble: 4 x 2
#>   indicator       n
#>   <chr>       <int>
#> 1 SP.POP.GROW  4752
#> 2 SP.POP.TOTL  4752
#> 3 SP.URB.GROW  4752
#> 4 SP.URB.TOTL  4752

SP.POP.GROW เดŽเดจเตเดจเดคเต เดœเดจเดธเด‚เด–เตเดฏเดพ เดตเดณเตผเดšเตเดšเดฏเดพเดฃเต, SP.POP.TOTL เดŽเดจเตเดจเดคเต เดฎเตŠเดคเตเดคเด‚ เดœเดจเดธเด‚เด–เตเดฏเดฏเตเด‚ SP.URBเดฏเตเดฎเดพเดฃเต. * เด’เดฐเต‡ เด•เดพเดฐเตเดฏเด‚, เดŽเดจเตเดจเดพเตฝ เดจเด—เดฐเดชเตเดฐเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เดฎเดพเดคเตเดฐเด‚. เดจเดฎเตเด•เตเด•เต เดˆ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเต† เดฐเดฃเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เดพเด‚: เดเดฐเดฟเดฏ - เดเดฐเดฟเดฏ (เดฎเตŠเดคเตเดคเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเด—เดฐเด‚) เด•เต‚เดŸเดพเดคเต† เดฏเดฅเดพเตผเดคเตเดฅ เดกเดพเดฑเตเดฑ (เดœเดจเดธเด‚เด–เตเดฏ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดณเตผเดšเตเดš) เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ:

pop3 <- pop2 %>% 
  separate(indicator, c(NA, "area", "variable"))

#> # A tibble: 19,008 x 5
#>    country area  variable year  value
#>    <chr>   <chr> <chr>    <chr> <dbl>
#>  1 ABW     URB   TOTL     2000  42444
#>  2 ABW     URB   TOTL     2001  43048
#>  3 ABW     URB   TOTL     2002  43670
#>  4 ABW     URB   TOTL     2003  44246
#>  5 ABW     URB   TOTL     2004  44669
#>  6 ABW     URB   TOTL     2005  44889
#>  7 ABW     URB   TOTL     2006  44881
#>  8 ABW     URB   TOTL     2007  44686
#>  9 ABW     URB   TOTL     2008  44375
#> 10 ABW     URB   TOTL     2009  44052
#> # โ€ฆ with 18,998 more rows

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต† เดฐเดฃเตเดŸเต เดจเดฟเดฐเด•เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต:

pop3 %>% 
  pivot_wider(names_from = variable, values_from = value)

#> # A tibble: 9,504 x 5
#>    country area  year   TOTL    GROW
#>    <chr>   <chr> <chr> <dbl>   <dbl>
#>  1 ABW     URB   2000  42444  1.18  
#>  2 ABW     URB   2001  43048  1.41  
#>  3 ABW     URB   2002  43670  1.43  
#>  4 ABW     URB   2003  44246  1.31  
#>  5 ABW     URB   2004  44669  0.951 
#>  6 ABW     URB   2005  44889  0.491 
#>  7 ABW     URB   2006  44881 -0.0178
#>  8 ABW     URB   2007  44686 -0.435 
#>  9 ABW     URB   2008  44375 -0.698 
#> 10 ABW     URB   2009  44052 -0.731 
#> # โ€ฆ with 9,494 more rows

เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเต เดฒเดฟเดธเตเดฑเตเดฑเต

เด…เดตเดธเดพเดจเดคเตเดคเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเดšเตเดš เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเต เดฒเดฟเดธเตเดฑเตเดฑเต เด‰เดฃเตเดŸเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•:

contacts <- tribble(
  ~field, ~value,
  "name", "Jiena McLellan",
  "company", "Toyota", 
  "name", "John Smith", 
  "company", "google", 
  "email", "john@google.com",
  "name", "Huxley Ratcliffe"
)

เดˆ เดฒเดฟเดธเตเดฑเตเดฑเต เดชเดŸเตเดŸเดฟเด•เดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเต เดตเดณเดฐเต† เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดเดคเต เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเดฟเตปเตเดฑเต‡เดคเดพเดฃเต เดกเดพเดฑเตเดฑ เดŽเดจเตเดจเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด‚ เด‡เดฒเตเดฒ. เด“เดฐเต‹ เดชเตเดคเดฟเดฏ เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเดฟเตปเตเดฑเต†เดฏเตเด‚ เดกเดพเดฑเตเดฑ "เดชเต‡เดฐเต" เดŽเดจเตเดจเดคเดฟเตฝ เดคเตเดŸเด™เตเด™เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• เดตเดดเดฟ เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดเดกเตปเตเดฑเดฟเดซเดฏเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เด“เดฐเต‹ เดคเดตเดฃ เดซเต€เตฝเดกเต เด•เต‹เดณเดคเตเดคเดฟเตฝ "เดชเต‡เดฐเต" เดŽเดจเตเดจ เดฎเต‚เดฒเตเดฏเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเตเด‚ เด…เดคเต เด’เดจเตเดจเดพเดฏเดฟ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚:

contacts <- contacts %>% 
  mutate(
    person_id = cumsum(field == "name")
  )
contacts

#> # A tibble: 6 x 3
#>   field   value            person_id
#>   <chr>   <chr>                <int>
#> 1 name    Jiena McLellan           1
#> 2 company Toyota                   1
#> 3 name    John Smith               2
#> 4 company google                   2
#> 5 email   john@google.com          2
#> 6 name    Huxley Ratcliffe         3

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต เด“เดฐเต‹ เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเดฟเดจเตเด‚ เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดเดกเดฟ เด‰เดฃเตเดŸเต, เดžเด™เตเด™เตพเด•เตเด•เต เดซเต€เตฝเดกเตเด‚ เดฎเต‚เดฒเตเดฏเดตเตเด‚ เด•เต‹เดณเด™เตเด™เดณเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเดพเด‚:

contacts %>% 
  pivot_wider(names_from = field, values_from = value)

#> # A tibble: 3 x 4
#>   person_id name             company email          
#>       <int> <chr>            <chr>   <chr>          
#> 1         1 Jiena McLellan   Toyota  <NA>           
#> 2         2 John Smith       google  john@google.com
#> 3         3 Huxley Ratcliffe <NA>    <NA>

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดชเตเดคเดฟเดฏ เด†เดถเดฏเดฎเดพเดฃเต†เดจเตเดจเดพเดฃเต เดŽเตปเตเดฑเต† เดตเตเดฏเด•เตเดคเดฟเดชเดฐเดฎเดพเดฏ เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด…เดตเดฌเต‹เดงเดœเดจเตเดฏเดตเตเด‚ เดฒเต†เด—เดธเดฟ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเต‡เด•เตเด•เดพเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเดฟเตฝ เดตเดณเดฐเต† เดฎเดฟเด•เดšเตเดšเดคเตเดฎเดพเดฃเต spread() ะธ gather(). เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต pivot_longer() ะธ pivot_wider().

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

DDoS เดชเดฐเดฟเดฐเด•เตเดทเดฏเตเดณเตเดณ เดธเตˆเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เตเด•, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ ๐Ÿ”ฅ DDoS เดชเดฐเดฟเดฐเด•เตเดท, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดณเตเดณ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เต‚ | ProHoster