ΠΏΠ°ΠΊΠ΅Ρ ΡΠΈΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° R - ΡΠΈΠ΄ΠΈΠ²Π΅ΡΡ.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π΅ Π΄Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠΎΡΠ΅Π½ Π²ΠΈΠ΄.
ΠΠ΅ΡΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ Π½Π° HabrΓ©
SJK: Gather() ΠΈ spread() ΡΠ΅ Π±ΡΠ΄Π°Ρ Π»ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ?
Π₯Π°Π΄Π»ΠΈ Π£ΠΈΠΊΡΠΌ: ΠΠΎ Π½ΡΠΊΡΠ΄Π΅. ΠΠ΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΡ , Π½ΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Ρ Π΄Π° ΠΏΡΠΈΡΡΡΡΠ²Π°Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅.
Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅
ΠΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΎΡ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΎΡ ΠΌΠΎΡ
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ TidyData ΠΡΠ½ΠΎΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ° tidyr ΠΠΎΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΈΡΠΎΠΊ Π² Π΄ΡΠ»ΡΠ³ ΡΠΎΡΠΌΠ°Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° tidyr 0.8.3.9000 ΠΡΠ΅Ρ ΠΎΠ΄ ΠΊΡΠΌ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΈΡΠΎΠΊ Π² Π΄ΡΠ»ΡΠ³ ΡΠΎΡΠΌΠ°Ρ Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (.value) ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΌΠΊΠΈ Π·Π° Π΄Π°ΡΠ° ΠΎΡ Π΄ΡΠ»ΡΠ³ Π² ΡΠΈΡΠΎΠΊ ΡΠΎΡΠΌΠ°Ρ ΠΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ tidyr ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ 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.
ΠΡΠ΅Ρ ΠΎΠ΄ ΠΊΡΠΌ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΡΡΠ½ΠΎΡΡ Π½Π΅ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΠΈΡΠ΅ ΡΡΠ°ΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ; Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ ΡΡΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½ΠΎΠ²ΠΈ 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()
, Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π·Π°ΠΏΠ°ΡΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½ΡΠΌΠ° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π½Π°_Π΄ΠΎ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ_Π΄ΠΎ ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΈΠΌ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π² ΠΊΠ°Π²ΠΈΡΠΊΠΈ.
Π’Π°Π±Π»ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π°ΠΉ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ° Ρ Π½ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠΈΠ΄ΡΡ.
ΠΠ΅Π»Π΅ΠΆΠΊΠ° ΠΎΡ Π°Π²ΡΠΎΡΠ°
Π¦Π΅Π»ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π΅ Π°Π΄Π°ΠΏΡΠΈΠ²Π΅Π½, Π΄ΠΎΡΠΈ Π±ΠΈΡ ΠΊΠ°Π·Π°Π» Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΏΡΠ΅Π²ΠΎΠ΄
Π²ΠΈΠ½Π΅ΡΠΊΠΈ ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° tidyverse.
ΠΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΈΡΠΎΠΊ Π² Π΄ΡΠ»ΡΠ³ ΡΠΎΡΠΌΠ°Ρ
pivot_longer ()
β ΠΏΡΠ°Π²ΠΈ Π½Π°Π±ΠΎΡΠΈΡΠ΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ-Π΄ΡΠ»Π³ΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π±ΡΠΎΡ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π±ΡΠΎΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅.
ΠΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ:
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, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠΈΠ΄ΡΡ. Π’ΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΡΡΠ΄ΡΡΠΆΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° ΠΎΡ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½Π°ΡΠ° Π·Π΄ΡΠ°Π²Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π° ΡΡΠ±Π΅ΡΠΊΡΠ»ΠΎΠ·Π°.
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
ΠΏΠΎΠ»Π΅ΡΠ° Π΄ΡΡΠΆΠ°Π²Π°, isoxnumx, isoxnumx Π²Π΅ΡΠ΅ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. ΠΠ°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΠΎΠ±ΡΡΠ½Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Ρ 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
ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·Π΅Π½ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (.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()
- Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π±ΡΠΎΡ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° Π·Π° Π΄Π°ΡΠ° ΡΡΠ΅Π· Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅.
Π’ΠΎΠ·ΠΈ Π²ΠΈΠ΄ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΄ΠΊΠΎ Π·Π° ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠΎΡΠ½Π° ΡΠΎΡΠΌΠ°, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈΠ»ΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Ρ Π½ΡΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ.
ΠΡΡΡΠ½ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ 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
ΠΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π·Π° Π΄ΠΎΡ ΠΎΠ΄ΠΈΡΠ΅ ΠΈ Π½Π°Π΅ΠΌΠΈΡΠ΅ ΠΎΡ ΠΏΡΠ΅Π±ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠ΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π² Π‘ΠΠ© ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ us_rent_income ΡΡΠ΄ΡΡΠΆΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΠ΅Π΄Π½ΠΈΡ Π΄ΠΎΡ ΠΎΠ΄ ΠΈ Π½Π°Π΅ΠΌΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°Ρ Π² Π‘ΠΠ© Π·Π° 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
ΠΡΠ² ΡΠΎΡΠΌΠ°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ us_rent_income ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΡΡ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π±ΠΈΡ ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΈ: Π½Π°Π΅ΠΌ, rent_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
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π²ΡΡΠ½Π΅ΠΌ ΠΏΠΎΠ»Π΅ΡΠΎ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π² ΠΊΠΎΠ»ΠΎΠ½ΠΈ:
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