R เจชเฉˆเจ•เฉ‡เจœ tidyr เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจซเฉฐเจ•เจธเจผเจจ pivot_longer เจ…เจคเฉ‡ pivot_wider

เจชเฉˆเจ•เฉ‡เจœ เจธเฉเจฅเจฐเจพ R เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ‡ เจ•เฉ‹เจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ - เจธเฉเจฅเจฐเจพ.
เจชเฉˆเจ•เฉ‡เจœ เจฆเจพ เจฎเฉเฉฑเจ– เจ‰เจฆเฉ‡เจธเจผ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‰เจฃเจพ เจนเฉˆเฅค

Habrรฉ 'เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‰เจชเจฒเจฌเจง เจนเฉˆ เจชเฉเจฐเจ•เจพเจธเจผเจจ เจ‡เจธ เจชเฉˆเจ•เฉ‡เจœ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆ, เจชเจฐ เจ‡เจน 2015 เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจญ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚, เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจ•เฉเจ เจฆเจฟเจจ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธ เจฆเฉ‡ เจฒเฉ‡เจ–เจ•, เจนเฉ‡เจกเจฒเฉ€ เจตเจฟเจ•เจนเฉˆเจฎ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€เฅค

R เจชเฉˆเจ•เฉ‡เจœ tidyr เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจซเฉฐเจ•เจธเจผเจจ pivot_longer เจ…เจคเฉ‡ pivot_wider

เจเจธเจœเฉ‡เจ•เฉ‡: เจ•เฉ€ gather() เจ…เจคเฉ‡ spread() เจจเฉ‚เฉฐ เจฌเจฐเจคเจฐเจซเจผ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ?

เจนเฉˆเจกเจฒเฉ€ เจตเจฟเจ•เจนเฉˆเจฎ: เจ•เฉเจ เจนเฉฑเจฆ เจคเฉฑเจ•. เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจ‡เจนเจจเจพเจ‚ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจ เฉ€เจ• เจ•เจฐเจพเจ‚เจ—เฉ‡, เจชเจฐ เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจฐเจนเจฟเจฃเจ—เฉ‡เฅค

เจธเจฎเฉฑเจ—เจฐเฉ€

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเฉ‡เจฐเฉ‡ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจคเจพเจฐ ะธ YouTube เจšเฉˆเจจเจฒเฅค เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ†เจฐ เจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆเฅค

เจธเฉเจšเฉฑเจœเจพ เจกเจพเจŸเจพ เจธเฉฐเจ•เจฒเจช

เจŸเฉ€เจšเจพ เจธเฉเจฅเจฐเจพ - เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจ–เฉŒเจคเฉ€ เจธเจพเจซเจผ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‰เจฃ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเฉ‹เฅค เจธเจผเฉเฉฑเจง เจกเฉ‡เจŸเจพ เจ‰เจน เจกเฉ‡เจŸเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡:

  • เจนเจฐเฉ‡เจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
  • เจนเจฐ เจจเจฟเจฐเฉ€เจ–เจฃ เจ‡เฉฑเจ• เจธเจคเจฐ เจนเฉˆเฅค
  • เจนเจฐเฉ‡เจ• เจฎเฉเฉฑเจฒ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจฒ เจนเฉˆเฅค

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเฉเจฅเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจ…เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆเฅค

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

เจฒเฉ‡เจ–เจ• เจคเฉ‹เจ‚ เจจเฉ‹เจŸ

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจธเจพเจฐเจพ เจŸเฉˆเจ•เจธเจŸ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเฉˆ, เจฎเฉˆเจ‚ เจฎเฉเจซเจค เจ…เจจเฉเจตเจพเจฆ เจตเฉ€ เจ•เจนเจพเจ‚เจ—เจพ เจตเจฟเจ—เจจเฉ‡เจŸ เจ…เจงเจฟเจ•เจพเจฐเจค tidyverse เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚.

เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจšเฉŒเฉœเฉ‡ เจคเฉ‹เจ‚ เจฒเฉฐเจฌเฉ‡ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ‰เจฆเจพเจนเจฐเจฃ

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()

  • เจชเจนเจฟเจฒเฉ€ เจฆเจฒเฉ€เจฒ เจ•เจพเจฒเจฐ, เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจนเฉœเฉ‡ เจ•เจพเจฒเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจธเจฟเจตเจพเจ เจธเจพเจฐเฉ‡ เจ•เจพเจฒเจฎ เจตเจพเจฐ.
  • เจฆเจฒเฉ€เจฒ เจจเจพเจฎ_เจจเฉ‚เฉฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเจพ เจจเจพเจฎ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ•เจพเจฒเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจนเจจเฅค
  • เจฎเฉเฉฑเจฒเจพเจ‚_เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเจพ เจจเจพเจฎ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจตเจฟเจฒเฉ€เจจ เจ•เฉ€เจคเฉ‡ เจ•เจพเจฒเจฎเจพเจ‚ เจฆเฉ‡ เจธเฉˆเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

ะกะฟะตั†ะธั„ะธะบะฐั†ะธะธ

เจ‡เจน เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ€ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจนเฉˆ เจธเฉเจฅเจฐเจพ, เจœเฉ‹ เจ•เจฟ เจชเฉเจฐเจพเจคเจจ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ…เจฃเจ‰เจชเจฒเจฌเจง เจธเฉ€เฅค

เจ‡เฉฑเจ• เจจเจฟเจฐเจงเจพเจฐเจจ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจซเจฐเฉ‡เจฎ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจนเจฐ เจ•เจคเจพเจฐ เจจเจตเฉ€เจ‚ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฎเจฟเจคเฉ€ เจซเจฐเฉ‡เจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฆเฉ‹ เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เจพเจฒเจฎ เจœเฉ‹ เจ‡เจธ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ:

  • .name เจฎเฉ‚เจฒ เจ•เจพเจฒเจฎ เจจเจพเจฎ เจธเจผเจพเจฎเจฟเจฒ เจนเฉˆเฅค
  • .เจฎเฉเฉฑเจฒ เจ•เจพเจฒเจฎ เจฆเจพ เจจเจพเจฎ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจฒ เจฎเฉเฉฑเจฒ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ‡เฅค

เจจเจฟเจฐเจงเจพเจฐเจจ เจฆเฉ‡ เจฌเจพเจ•เฉ€ เจ•เจพเจฒเจฎ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ เจ•เจฟ เจจเจตเจพเจ‚ เจ•เจพเจฒเจฎ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจพเจฒเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเฉ‡เจ—เจพ .name.

เจธเจชเฉˆเจธเฉ€เจซเจฟเจ•เฉ‡เจธเจผเจจ เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจจเจพเจฎ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจนเจฐ เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจคเจพเจฐ เจ…เจคเฉ‡ เจนเจฐ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจพเจฒเจฎ, เจ•เจพเจฒเจฎ เจจเจพเจฎ เจฆเฉ‡ เจจเจพเจฒ เจฎเจฟเจฒเจพ เจ•เฉ‡, เจ‡เจน เจชเจฐเจฟเจญเจพเจธเจผเจพ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจ‰เจฒเจเจฃ เจตเจพเจฒเฉ€ เจฒเฉฑเจ— เจธเจ•เจฆเฉ€ เจนเฉˆ, เจชเจฐ เจ•เฉเจ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจน เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ เจธเจชเจธเจผเจŸ

เจจเจฟเจฐเจงเจพเจฐเจจ เจฆเจพ เจฌเจฟเฉฐเจฆเฉ‚ เจ‡เจน เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจชเจฐเจฟเจตเจฐเจคเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพ เจฐเจนเฉ‡ เจกเฉ‡เจŸเจพเจซเฉเจฐเฉ‡เจฎ เจฒเจˆ เจจเจตเจพเจ‚ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจธเฉ‹เจง เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เฉฑเจ• เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจ†เจชเจ• เจซเจพเจฐเจฎเฉˆเจŸ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฒเฉฐเจฌเฉ‡ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจตเฉ‡เจฒเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹ 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

เจ–เฉ‡เจคเจฐ เจฆเฉ‡เจธเจผ, iso2, iso3 เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจนเจจเฅค เจธเจพเจกเจพ เจ•เฉฐเจฎ เจ•เจพเจฒเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจซเจฒเจฟเฉฑเจช เจ•เจฐเจจเจพ เจนเฉˆ 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

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจ•เจพเจฒเจฎ เจจเฉ‚เฉฐ เจจเฉ‹เจŸ เจ•เจฐเฉ‹ .name เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจคเจฌเจฆเฉ€เจฒเฉ€ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจฎเฉ‚เจฒ เจกเฉ‡เจŸเจพเจธเฉˆเจŸ เจฆเฉ‡ เจ•เจพเจฒเจฎ เจจเจพเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจนเฉˆเฅค

เจฒเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ‰เจฎเจฐ (เจ•เจพเจฒเจฎ เจฒเจฟเฉฐเจ— ะธ เจฆเฉ€ เจ‰เจฎเจฐ) เจฆเฉ‡ เจธเจฅเจฟเจฐ เจ…เจคเฉ‡ เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจฎเฉเฉฑเจฒ เจนเจจ, เจ‡เจธเจฒเจˆ เจ‡เจนเจจเจพเจ‚ เจ•เจพเจฒเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฐเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ:

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

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจจเจฟเจฐเจงเจพเจฐเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ…เจธเจฒ เจฎเจฟเจคเฉ€ เจซเจฐเฉ‡เจฎ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจนเฉˆ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฒเฉ€เจฒ เจตเจฐเจคเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ spec เจซเฉฐเจ•เจธเจผเจจ เจตเจฟเฉฑเจš 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

เจฌเจฃเจพเจˆ เจ—เจˆ เจฎเจฟเจคเฉ€ เจซเจฐเฉ‡เจฎ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเจฐเจฟเจตเจพเจฐ เจฆเฉ‡ เจฌเฉฑเจšเจฟเจ†เจ‚ เจฆเจพ เจกเฉ‡เจŸเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจชเจฐเจฟเจตเจพเจฐเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‹ เจฌเฉฑเจšเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจนเจฐเฉ‡เจ• เจฌเฉฑเจšเฉ‡ เจฒเจˆ, เจœเจจเจฎ เจฎเจฟเจคเฉ€ เจ…เจคเฉ‡ เจฒเจฟเฉฐเจ— 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฌเฉฑเจšเฉ‡ เจฒเจˆ เจกเฉ‡เจŸเจพ เจตเฉฑเจ–เจฐเฉ‡ เจ•เจพเจฒเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเจพ เจนเฉˆ; เจธเจพเจกเจพ เจ•เฉฐเจฎ เจ‡เจธ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจธเจนเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‰เจฃเจพ เจนเฉˆเฅค

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเจฐเฉ‡เจ• เจฌเฉฑเจšเฉ‡ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจตเจพเจฒเฉ‡ เจฆเฉ‹ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจนเจจ: เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจฒเจฟเฉฐเจ— เจ…เจคเฉ‡ เจœเจจเจฎ เจฎเจฟเจคเฉ€ (เจ…เจ—เฉ‡เจคเจฐ เจฆเฉ‡ เจจเจพเจฒ เจ•เจพเจฒเจฎ DOP เจœเจจเจฎ เจฎเจฟเจคเฉ€, เจ…เจ—เฉ‡เจคเจฐ เจตเจพเจฒเฉ‡ เจ•เจพเจฒเจฎ เจธเจผเจพเจฎเจฒ เจนเจจ เจฒเจฟเฉฐเจ— เจฌเฉฑเจšเฉ‡ เจฆเจพ เจฒเจฟเฉฐเจ— เจธเจผเจพเจฎเจฒ เจนเฉˆ)เฅค เจธเฉฐเจญเจพเจตเจฟเจค เจจเจคเฉ€เจœเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‰เจน เจตเฉฑเจ–เจฐเฉ‡ เจ•เจพเจฒเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ. เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจชเฉˆเจธเฉ€เจซเจฟเจ•เฉ‡เจธเจผเจจ เจคเจฟเจ†เจฐ เจ•เจฐเจ•เฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เจพเจฒเจฎ .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")) - เจ•เจพเจฒเจฎ เจจเฉ‚เฉฐ เจตเฉฐเจกเฉ‹ .name, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจค เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ…เฉฐเจกเจฐเจธเจ•เฉ‹เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฒเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ .เจฎเฉเฉฑเจฒ ะธ เจฌเฉฑเจšเฉ‡.
  • 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 เจจเจพเจฒ เจญเจฐเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจฐเจฟเจ•เจพเจฐเจก เจฆเฉ€ เจ…เจฃเจนเฉ‹เจ‚เจฆ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจฎเฉฑเจ›เฉ€ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจฆเจฒเฉ€เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ values_fill เจซเฉฐเจ•เจธเจผเจจ เจตเจฟเฉฑเจš 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(): เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจพเจฒเจฎ .name, เจคเฉ‹เจ‚ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ .เจฎเฉเฉฑเจฒ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เจพเจฒเจฎเฅค

เจ‡เจธ เจกเฉ‡เจŸเจพเจธเฉˆเจŸ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เจธเจŸเจฎ เจจเจฟเจฐเจงเจพเจฐเจจ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจนเจฐ เจธเฉฐเจญเจต เจฆเฉ‡เจธเจผ เจ…เจคเฉ‡ เจ‰เจคเจชเจพเจฆ เจธเฉเจฎเฉ‡เจฒ เจฆเจพ เจ†เจชเจฃเจพ เจ•เจพเจฒเจฎ เจนเฉ‹เจตเฉ‡, เจจเจพ เจ•เจฟ เจธเจฟเจฐเจซ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจ•เจพเจฒเจฎ:

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 เจฒเจˆ เจ…เจฎเจฐเฉ€เจ•เจพ เจฆเฉ‡ เจนเจฐเฉ‡เจ• เจฐเจพเจœ เจฒเจˆ เจ”เจธเจค เจ†เจฎเจฆเจจ เจ…เจคเฉ‡ เจ•เจฟเจฐเจพเจ เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ (เจชเฉˆเจ•เฉ‡เจœ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸ) เจธเฉเจšเฉฑเจœเฉ€ เจœเจจเจ—เจฃเจจเจพ).

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

เจ‰เจธ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจœเจฟเจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพเจธเฉˆเจŸ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจธเจพเจจเฉ‚เฉฐ_เจฐเฉˆเจ‚เจŸ_เจ‡เจจเจ•เจฎ เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เจพเจฒเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡: เจ•เจฟเจฐเจพเจ, rent_moe, เจ†, เจ†เจฎเจฆเจจ_เจฎเฉ‚เจˆ. เจ‡เจธ เจจเจฟเจฐเจงเจพเจฐเจจ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจชเจฐ เจฎเฉเฉฑเจ– เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจนเจฐ เจธเฉเจฎเฉ‡เจฒ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจจเฉเจฎเจพเจจ/moeเจ…เจคเฉ‡ เจซเจฟเจฐ เจ•เจพเจฒเจฎ เจฆเจพ เจจเจพเจฎ เจคเจฟเจ†เจฐ เจ•เจฐเฉ‹เฅค

  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", "[email protected]",
  "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   [email protected]          2
#> 6 name    Huxley Ratcliffe         3

เจนเฉเจฃ เจœเจฆเฉ‹เจ‚ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเจฐเฉ‡เจ• เจธเฉฐเจชเจฐเจ• เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ ID เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจ–เฉ‡เจคเจฐ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจ•เจพเจฒเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

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  [email protected]
#> 3         3 Huxley Ratcliffe <NA>    <NA>

เจธเจฟเฉฑเจŸเจพ

เจฎเฉ‡เจฐเฉ€ เจจเจฟเฉฑเจœเฉ€ เจฐเจพเจ เจนเฉˆ เจ•เจฟ เจจเจตเฉ€เจ‚ เจงเจพเจฐเจจเจพ เจธเฉเจฅเจฐเจพ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจตเจงเฉ‡เจฐเฉ‡ เจ…เจจเฉเจญเจตเฉ€, เจ…เจคเฉ‡ เจตเจฟเจฐเจพเจธเจคเฉ€ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เฉฑเจคเจฎ spread() ะธ gather(). เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€ เจนเฉˆ pivot_longer() ะธ pivot_wider().

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹