ಪ್ರೊಹೋಸ್ಟರ್ > Блог > ಆಡಳಿತ > R ಪ್ಯಾಕೇಜ್ tidyr ಮತ್ತು ಅದರ ಹೊಸ ಕಾರ್ಯಗಳು pivot_longer ಮತ್ತು pivot_wider
R ಪ್ಯಾಕೇಜ್ tidyr ಮತ್ತು ಅದರ ಹೊಸ ಕಾರ್ಯಗಳು pivot_longer ಮತ್ತು pivot_wider
ಪ್ಯಾಕೇಜ್ ಅಚ್ಚುಕಟ್ಟು R ಭಾಷೆಯಲ್ಲಿನ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಒಂದನ್ನು ಒಳಗೊಂಡಿದೆ - ಅಚ್ಚುಕಟ್ಟಾದ.
ಡೇಟಾವನ್ನು ನಿಖರವಾದ ರೂಪಕ್ಕೆ ತರುವುದು ಪ್ಯಾಕೇಜ್ನ ಮುಖ್ಯ ಉದ್ದೇಶವಾಗಿದೆ.
Habré ನಲ್ಲಿ ಈಗಾಗಲೇ ಲಭ್ಯವಿದೆ ಪ್ರಕಟಣೆ ಈ ಪ್ಯಾಕೇಜ್ಗೆ ಸಮರ್ಪಿಸಲಾಗಿದೆ, ಆದರೆ ಇದು 2015 ರ ಹಿಂದಿನದು. ಮತ್ತು ಕೆಲವು ದಿನಗಳ ಹಿಂದೆ ಅದರ ಲೇಖಕ ಹೆಡ್ಲಿ ವಿಕ್ಹ್ಯಾಮ್ ಅವರು ಘೋಷಿಸಿದ ಅತ್ಯಂತ ಪ್ರಸ್ತುತ ಬದಲಾವಣೆಗಳ ಬಗ್ಗೆ ನಾನು ನಿಮಗೆ ಹೇಳಲು ಬಯಸುತ್ತೇನೆ.
SJK: ಒಟ್ಟುಗೂಡಿಸುವುದೇ() ಮತ್ತು ಹರಡುವಿಕೆ() ಅಸಮ್ಮತಿಯಾಗುತ್ತದೆಯೇ?
ಹ್ಯಾಡ್ಲಿ ವಿಕ್ಹ್ಯಾಮ್: ಒಂದು ಹಂತಕ್ಕೆ. ಈ ಕಾರ್ಯಗಳ ಬಳಕೆಯನ್ನು ನಾವು ಇನ್ನು ಮುಂದೆ ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ ಮತ್ತು ಅವುಗಳಲ್ಲಿನ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅವುಗಳು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ಇರುತ್ತವೆ.
ಪರಿವಿಡಿ
ನೀವು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ನೀವು ನನ್ನ ಬಗ್ಗೆ ಆಸಕ್ತಿ ಹೊಂದಿರಬಹುದು ಟೆಲಿಗ್ರಾಮ್ и YouTube ವಾಹಿನಿಗಳು. ಹೆಚ್ಚಿನ ವಿಷಯವನ್ನು R ಭಾಷೆಗೆ ಮೀಸಲಿಡಲಾಗಿದೆ.
ಗುರಿ ಅಚ್ಚುಕಟ್ಟು — ಅಚ್ಚುಕಟ್ಟಾದ ರೂಪ ಎಂದು ಕರೆಯಲ್ಪಡುವ ಡೇಟಾವನ್ನು ತರಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಅಚ್ಚುಕಟ್ಟಾದ ಡೇಟಾವು ಇಲ್ಲಿ ಡೇಟಾವಾಗಿದೆ:
ಪ್ರತಿಯೊಂದು ವೇರಿಯಬಲ್ ಒಂದು ಕಾಲಮ್ನಲ್ಲಿದೆ.
ಪ್ರತಿಯೊಂದು ವೀಕ್ಷಣೆಯು ಒಂದು ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ.
ಪ್ರತಿಯೊಂದು ಮೌಲ್ಯವು ಒಂದು ಕೋಶವಾಗಿದೆ.
ವಿಶ್ಲೇಷಣೆ ನಡೆಸುವಾಗ ಅಚ್ಚುಕಟ್ಟಾದ ಡೇಟಾದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾದ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಹೆಚ್ಚು ಸುಲಭ ಮತ್ತು ಹೆಚ್ಚು ಅನುಕೂಲಕರವಾಗಿದೆ.
ಟೈಡಿರ್ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ಮುಖ್ಯ ಕಾರ್ಯಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ
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(), ಮೂಲ ಕೋಷ್ಟಕದಲ್ಲಿ ಸ್ಟಾಕ್ಗಳು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳಲ್ಲಿ ಯಾವುದೇ ಕಾಲಮ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಲಾಗಿಲ್ಲ ಹೆಸರುಗಳು_ಗೆ и ಮೌಲ್ಯಗಳು_ಗೆ ಅವರ ಹೆಸರುಗಳು ಉದ್ಧರಣ ಚಿಹ್ನೆಯಲ್ಲಿರಬೇಕು.
ಹೊಸ ಪರಿಕಲ್ಪನೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಹೇಗೆ ಬದಲಾಯಿಸುವುದು ಎಂಬುದನ್ನು ಸುಲಭವಾಗಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುವ ಟೇಬಲ್ ಅಚ್ಚುಕಟ್ಟು.
ಲೇಖಕರಿಂದ ಟಿಪ್ಪಣಿ
ಕೆಳಗಿನ ಎಲ್ಲಾ ಪಠ್ಯವು ಹೊಂದಾಣಿಕೆಯಾಗಿದೆ, ನಾನು ಉಚಿತ ಅನುವಾದವನ್ನು ಸಹ ಹೇಳುತ್ತೇನೆ ವಿಗ್ನೆಟ್ಸ್ ಅಧಿಕೃತ ಅಚ್ಚುಕಟ್ಟು ಗ್ರಂಥಾಲಯ ವೆಬ್ಸೈಟ್ನಿಂದ.
ಡೇಟಾವನ್ನು ವಿಶಾಲದಿಂದ ದೀರ್ಘ ಸ್ವರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಸರಳ ಉದಾಹರಣೆ
pivot_longer () - ಕಾಲಮ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ಮತ್ತು ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ಮೂಲಕ ಡೇಟಾ ಸೆಟ್ಗಳನ್ನು ಉದ್ದವಾಗಿಸುತ್ತದೆ.
ಲೇಖನದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾದ ಉದಾಹರಣೆಗಳನ್ನು ಚಲಾಯಿಸಲು, ನೀವು ಮೊದಲು ಅಗತ್ಯ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸಂಪರ್ಕಿಸಬೇಕು:
library(tidyr)
library(dplyr)
library(readr)
(ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ) ಜನರನ್ನು ಅವರ ಧರ್ಮ ಮತ್ತು ವಾರ್ಷಿಕ ಆದಾಯದ ಕುರಿತು ಕೇಳಿದ ಸಮೀಕ್ಷೆಯ ಫಲಿತಾಂಶಗಳೊಂದಿಗೆ ನಾವು ಟೇಬಲ್ ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಹೇಳೋಣ:
ಈ ಕೋಷ್ಟಕವು ಪ್ರತಿಸ್ಪಂದಕರ ಧರ್ಮದ ಡೇಟಾವನ್ನು ಸಾಲುಗಳಲ್ಲಿ ಒಳಗೊಂಡಿದೆ ಮತ್ತು ಆದಾಯ ಮಟ್ಟಗಳು ಕಾಲಮ್ ಹೆಸರುಗಳಲ್ಲಿ ಹರಡಿಕೊಂಡಿವೆ. ಪ್ರತಿ ವರ್ಗದಿಂದ ಪ್ರತಿಕ್ರಿಯಿಸುವವರ ಸಂಖ್ಯೆಯನ್ನು ಧರ್ಮ ಮತ್ತು ಆದಾಯದ ಛೇದಕದಲ್ಲಿ ಸೆಲ್ ಮೌಲ್ಯಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಟೇಬಲ್ ಅನ್ನು ಅಚ್ಚುಕಟ್ಟಾಗಿ, ಸರಿಯಾದ ಸ್ವರೂಪಕ್ಕೆ ತರಲು, ಅದನ್ನು ಬಳಸಲು ಸಾಕು 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")
ಕ್ಷೇತ್ರಗಳು ದೇಶದ, isoxnumx, isoxnumx ಈಗಾಗಲೇ ಅಸ್ಥಿರಗಳಾಗಿವೆ. ಕಾಲಮ್ಗಳನ್ನು ಫ್ಲಿಪ್ ಮಾಡುವುದು ನಮ್ಮ ಕಾರ್ಯ new_sp_m014 ಮೇಲೆ newrel_f65.
ಈ ಕಾಲಮ್ಗಳ ಹೆಸರುಗಳು ಈ ಕೆಳಗಿನ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತವೆ:
ಪೂರ್ವಪ್ರತ್ಯಯ new_ ಕಾಲಮ್ ಕ್ಷಯರೋಗದ ಹೊಸ ಪ್ರಕರಣಗಳ ಡೇಟಾವನ್ನು ಹೊಂದಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ, ಪ್ರಸ್ತುತ ದಿನಾಂಕದ ಚೌಕಟ್ಟು ಹೊಸ ಕಾಯಿಲೆಗಳ ಮಾಹಿತಿಯನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ, ಆದ್ದರಿಂದ ಪ್ರಸ್ತುತ ಸಂದರ್ಭದಲ್ಲಿ ಈ ಪೂರ್ವಪ್ರತ್ಯಯವು ಯಾವುದೇ ಅರ್ಥವನ್ನು ಹೊಂದಿಲ್ಲ.
sp/rel/sp/ep ರೋಗವನ್ನು ಪತ್ತೆಹಚ್ಚುವ ವಿಧಾನವನ್ನು ವಿವರಿಸುತ್ತದೆ.
m/f ರೋಗಿಯ ಲಿಂಗ.
014/1524/2535/3544/4554/65 ರೋಗಿಯ ವಯಸ್ಸಿನ ಶ್ರೇಣಿ.
ಕಾರ್ಯವನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಈ ಕಾಲಮ್ಗಳನ್ನು ವಿಭಜಿಸಬಹುದು extract()ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿ ಬಳಸಿ.
ಅಂತಿಮವಾಗಿ, ನಾವು ರಚಿಸಿದ ವಿವರಣೆಯನ್ನು ಮೂಲ ದಿನಾಂಕ ಚೌಕಟ್ಟಿಗೆ ಅನ್ವಯಿಸಲು ಯಾರು ನಾವು ವಾದವನ್ನು ಬಳಸಬೇಕಾಗಿದೆ ಸ್ಪೆಕ್ ಕಾರ್ಯದಲ್ಲಿ 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
ನಾವು ಈಗ ಮಾಡಿದ ಎಲ್ಲವನ್ನೂ ಕ್ರಮಬದ್ಧವಾಗಿ ಈ ಕೆಳಗಿನಂತೆ ಚಿತ್ರಿಸಬಹುದು:
ಬಹು ಮೌಲ್ಯಗಳನ್ನು ಬಳಸುವ ನಿರ್ದಿಷ್ಟತೆ (.ಮೌಲ್ಯ)
ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಕಾಲಮ್ .ಮೌಲ್ಯ ಕೇವಲ ಒಂದು ಮೌಲ್ಯವನ್ನು ಒಳಗೊಂಡಿದೆ, ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಇದು ಹೀಗಿರುತ್ತದೆ.
ಆದರೆ ಸಾಂದರ್ಭಿಕವಾಗಿ ನೀವು ಮೌಲ್ಯಗಳಲ್ಲಿ ವಿಭಿನ್ನ ಡೇಟಾ ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಕಾಲಮ್ಗಳಿಂದ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕಾದಾಗ ಪರಿಸ್ಥಿತಿ ಉದ್ಭವಿಸಬಹುದು. ಪರಂಪರೆಯ ಕಾರ್ಯವನ್ನು ಬಳಸುವುದು spread() ಇದನ್ನು ಮಾಡಲು ಸಾಕಷ್ಟು ಕಷ್ಟವಾಗುತ್ತದೆ.
ಕೆಳಗಿನ ಉದಾಹರಣೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ ವಿಗ್ನೆಟ್ಸ್ ಪ್ಯಾಕೇಜ್ಗೆ ಡೇಟಾ. ಟೇಬಲ್.
ರಚಿಸಿದ ದಿನಾಂಕ ಚೌಕಟ್ಟು ಪ್ರತಿ ಸಾಲಿನಲ್ಲಿ ಒಂದು ಕುಟುಂಬದ ಮಕ್ಕಳ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿದೆ. ಕುಟುಂಬಗಳು ಒಂದು ಅಥವಾ ಎರಡು ಮಕ್ಕಳನ್ನು ಹೊಂದಿರಬಹುದು. ಪ್ರತಿ ಮಗುವಿಗೆ, ಜನ್ಮ ದಿನಾಂಕ ಮತ್ತು ಲಿಂಗದ ಮೇಲೆ ಡೇಟಾವನ್ನು ಒದಗಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಮಗುವಿನ ಡೇಟಾವು ಪ್ರತ್ಯೇಕ ಕಾಲಮ್ಗಳಲ್ಲಿದೆ; ವಿಶ್ಲೇಷಣೆಗಾಗಿ ಈ ಡೇಟಾವನ್ನು ಸರಿಯಾದ ಸ್ವರೂಪಕ್ಕೆ ತರುವುದು ನಮ್ಮ ಕಾರ್ಯವಾಗಿದೆ.
ಪ್ರತಿ ಮಗುವಿನ ಬಗ್ಗೆ ಮಾಹಿತಿಯೊಂದಿಗೆ ನಾವು ಎರಡು ಅಸ್ಥಿರಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ: ಅವರ ಲಿಂಗ ಮತ್ತು ಹುಟ್ಟಿದ ದಿನಾಂಕ (ಪೂರ್ವಪ್ರತ್ಯಯದೊಂದಿಗೆ ಕಾಲಮ್ಗಳು ಡಾಪ್ ಹುಟ್ಟಿದ ದಿನಾಂಕ, ಪೂರ್ವಪ್ರತ್ಯಯದೊಂದಿಗೆ ಕಾಲಮ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಲಿಂಗ ಮಗುವಿನ ಲಿಂಗವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ). ನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶವೆಂದರೆ ಅವರು ಪ್ರತ್ಯೇಕ ಕಾಲಮ್ಗಳಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಬೇಕು. ಕಾಲಮ್ ಇರುವ ನಿರ್ದಿಷ್ಟತೆಯನ್ನು ರಚಿಸುವ ಮೂಲಕ ನಾವು ಇದನ್ನು ಮಾಡಬಹುದು .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)) - ಕ್ಷೇತ್ರ ಮೌಲ್ಯಗಳನ್ನು ಪರಿವರ್ತಿಸಿ ಮಗು ಪಠ್ಯದಿಂದ ಸಂಖ್ಯಾ ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ.
ಈಗ ನಾವು ಮೂಲ ಡೇಟಾಫ್ರೇಮ್ಗೆ ಪರಿಣಾಮವಾಗಿ ವಿವರಣೆಯನ್ನು ಅನ್ವಯಿಸಬಹುದು ಮತ್ತು ಟೇಬಲ್ ಅನ್ನು ಬಯಸಿದ ರೂಪಕ್ಕೆ ತರಬಹುದು.
ನಾವು ವಾದವನ್ನು ಬಳಸುತ್ತೇವೆ 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)
#> # 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() ಮತ್ತು ಈ ಕಾಣೆಯಾದ ಮೌಲ್ಯಗಳನ್ನು ಸೊನ್ನೆಗಳೊಂದಿಗೆ ಭರ್ತಿ ಮಾಡಿ:
ಉತ್ಪನ್ನ, ದೇಶ ಮತ್ತು ವರ್ಷದ ಸಂಯೋಜನೆಯನ್ನು ಹೊಂದಿರುವ ಟೇಬಲ್ ಅನ್ನು ನಾವು ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಊಹಿಸಿ. ಪರೀಕ್ಷಾ ದಿನಾಂಕದ ಚೌಕಟ್ಟನ್ನು ರಚಿಸಲು, ನೀವು ಈ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ರನ್ ಮಾಡಬಹುದು:
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
ಡೇಟಾ ಫ್ರೇಮ್ ಅನ್ನು ವಿಸ್ತರಿಸುವುದು ನಮ್ಮ ಕಾರ್ಯವಾಗಿದೆ, ಇದರಿಂದಾಗಿ ಒಂದು ಕಾಲಮ್ ಉತ್ಪನ್ನ ಮತ್ತು ದೇಶದ ಪ್ರತಿಯೊಂದು ಸಂಯೋಜನೆಗೆ ಡೇಟಾವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ಕೇವಲ ವಾದದಲ್ಲಿ ಹಾದುಹೋಗಿರಿ ಹೆಸರುಗಳು_ಇಂದ ವಿಲೀನಗೊಳ್ಳಬೇಕಾದ ಕ್ಷೇತ್ರಗಳ ಹೆಸರನ್ನು ಹೊಂದಿರುವ ವೆಕ್ಟರ್.
ನೀವು ಕಾರ್ಯಕ್ಕೆ ವಿಶೇಷಣಗಳನ್ನು ಸಹ ಅನ್ವಯಿಸಬಹುದು pivot_wider(). ಆದರೆ ಸಲ್ಲಿಸಿದಾಗ pivot_wider() ವಿವರಣೆಯು ವಿರುದ್ಧವಾದ ಪರಿವರ್ತನೆಯನ್ನು ಮಾಡುತ್ತದೆ pivot_longer(): ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕಾಲಮ್ಗಳು .ಹೆಸರು, ನಿಂದ ಮೌಲ್ಯಗಳನ್ನು ಬಳಸುವುದು .ಮೌಲ್ಯ ಮತ್ತು ಇತರ ಕಾಲಮ್ಗಳು.
ಈ ಡೇಟಾಸೆಟ್ಗಾಗಿ, ಡೇಟಾದಲ್ಲಿ ಇರುವಂತಹ ಪ್ರತಿಯೊಂದು ದೇಶ ಮತ್ತು ಉತ್ಪನ್ನ ಸಂಯೋಜನೆಯು ತನ್ನದೇ ಆದ ಕಾಲಮ್ ಅನ್ನು ಹೊಂದಲು ನೀವು ಬಯಸಿದರೆ ನೀವು ಕಸ್ಟಮ್ ವಿವರಣೆಯನ್ನು ರಚಿಸಬಹುದು:
#> # 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
ಹೊಸ ಟೈಡರ್ ಪರಿಕಲ್ಪನೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಹಲವಾರು ಮುಂದುವರಿದ ಉದಾಹರಣೆಗಳು
US ಸೆನ್ಸಸ್ ಆದಾಯ ಮತ್ತು ಬಾಡಿಗೆ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಉದಾಹರಣೆಯಾಗಿ ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವುದು.
ಡೇಟಾ ಸೆಟ್ ನಮಗೆ_ಬಾಡಿಗೆ_ಆದಾಯ 2017 ರಲ್ಲಿ US ನಲ್ಲಿನ ಪ್ರತಿ ರಾಜ್ಯಕ್ಕೆ ಸರಾಸರಿ ಆದಾಯ ಮತ್ತು ಬಾಡಿಗೆ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ (ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ಡೇಟಾ ಸೆಟ್ ಲಭ್ಯವಿದೆ ಅಚ್ಚುಕಟ್ಟಾದ ಜನಗಣತಿ).
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
ಡೇಟಾಸೆಟ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲಾದ ರೂಪದಲ್ಲಿ ನಮಗೆ_ಬಾಡಿಗೆ_ಆದಾಯ ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಅತ್ಯಂತ ಅನಾನುಕೂಲವಾಗಿದೆ, ಆದ್ದರಿಂದ ನಾವು ಕಾಲಮ್ಗಳೊಂದಿಗೆ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ರಚಿಸಲು ಬಯಸುತ್ತೇವೆ: ಬಾಡಿಗೆ, ಬಾಡಿಗೆ_ಮೊ, ಬಂದು, ಆದಾಯ_ಮೋ. ಈ ವಿವರಣೆಯನ್ನು ರಚಿಸಲು ಹಲವು ಮಾರ್ಗಗಳಿವೆ, ಆದರೆ ಮುಖ್ಯ ಅಂಶವೆಂದರೆ ನಾವು ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳ ಪ್ರತಿಯೊಂದು ಸಂಯೋಜನೆಯನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ ಮತ್ತು ಅಂದಾಜು/ಮೊತದನಂತರ ಕಾಲಮ್ ಹೆಸರನ್ನು ರಚಿಸಿ.
ಕೆಲವೊಮ್ಮೆ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ಬಯಸಿದ ರೂಪದಲ್ಲಿ ತರಲು ಹಲವಾರು ಹಂತಗಳ ಅಗತ್ಯವಿದೆ.
ಡೇಟಾಸೆಟ್ ವಿಶ್ವ_ಬ್ಯಾಂಕ್_ಪಾಪ್ 2000 ಮತ್ತು 2018 ರ ನಡುವಿನ ಪ್ರತಿ ದೇಶದ ಜನಸಂಖ್ಯೆಯ ಕುರಿತು ವಿಶ್ವ ಬ್ಯಾಂಕ್ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿದೆ.
ಪ್ರತಿಯೊಂದು ವೇರಿಯಬಲ್ನೊಂದಿಗೆ ಅದರ ಸ್ವಂತ ಕಾಲಮ್ನಲ್ಲಿ ಅಚ್ಚುಕಟ್ಟಾಗಿ ಡೇಟಾ ಸೆಟ್ ಅನ್ನು ರಚಿಸುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ. ಯಾವ ಹಂತಗಳು ಬೇಕಾಗುತ್ತವೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ, ಆದರೆ ನಾವು ಅತ್ಯಂತ ಸ್ಪಷ್ಟವಾದ ಸಮಸ್ಯೆಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ: ವರ್ಷವು ಅನೇಕ ಕಾಲಮ್ಗಳಲ್ಲಿ ಹರಡಿದೆ.
ಇದನ್ನು ಸರಿಪಡಿಸಲು ನೀವು ಕಾರ್ಯವನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ pivot_longer().
ಮುಂದಿನ ಹಂತವು ಸೂಚಕ ವೇರಿಯಬಲ್ ಅನ್ನು ನೋಡುವುದು. 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. * ಅದೇ ವಿಷಯ, ಆದರೆ ನಗರ ಪ್ರದೇಶಗಳಿಗೆ ಮಾತ್ರ. ಈ ಮೌಲ್ಯಗಳನ್ನು ಎರಡು ಅಸ್ಥಿರಗಳಾಗಿ ವಿಭಜಿಸೋಣ: ಪ್ರದೇಶ - ಪ್ರದೇಶ (ಒಟ್ಟು ಅಥವಾ ನಗರ) ಮತ್ತು ನಿಜವಾದ ಡೇಟಾವನ್ನು ಹೊಂದಿರುವ ವೇರಿಯಬಲ್ (ಜನಸಂಖ್ಯೆ ಅಥವಾ ಬೆಳವಣಿಗೆ):
ಈ ಪಟ್ಟಿಯನ್ನು ಪಟ್ಟಿ ಮಾಡುವುದು ತುಂಬಾ ಕಷ್ಟಕರವಾಗಿದೆ ಏಕೆಂದರೆ ಯಾವ ಡೇಟಾ ಯಾವ ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿದೆ ಎಂಬುದನ್ನು ಗುರುತಿಸುವ ಯಾವುದೇ ವೇರಿಯಬಲ್ ಇಲ್ಲ. ಪ್ರತಿಯೊಂದು ಹೊಸ ಸಂಪರ್ಕದ ಡೇಟಾವು "ಹೆಸರು" ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸುವುದರ ಮೂಲಕ ನಾವು ಇದನ್ನು ಸರಿಪಡಿಸಬಹುದು, ಆದ್ದರಿಂದ ನಾವು ಅನನ್ಯ ಗುರುತಿಸುವಿಕೆಯನ್ನು ರಚಿಸಬಹುದು ಮತ್ತು ಕ್ಷೇತ್ರ ಕಾಲಮ್ "ಹೆಸರು" ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರುವ ಪ್ರತಿ ಬಾರಿ ಅದನ್ನು ಒಂದರಿಂದ ಹೆಚ್ಚಿಸಬಹುದು:
#> # 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 ಯನ್ನು ಹೊಂದಿದ್ದೇವೆ, ನಾವು ಕ್ಷೇತ್ರ ಮತ್ತು ಮೌಲ್ಯವನ್ನು ಕಾಲಮ್ಗಳಾಗಿ ಪರಿವರ್ತಿಸಬಹುದು:
#> # 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().