پرو هوسٽر > بلاگ > انتظاميه > آر پيڪيج tidyr ۽ ان جا نوان فنڪشن pivot_longer ۽ pivot_wider
آر پيڪيج tidyr ۽ ان جا نوان فنڪشن pivot_longer ۽ pivot_wider
پيڪ صاف سٿرو آر ٻولي ۾ سڀ کان وڌيڪ مشهور لائبريرين جي بنيادي ۾ شامل آهي - صاف سٿرو.
پيڪيج جو بنيادي مقصد ڊيٽا کي صحيح شڪل ۾ آڻڻ آهي.
Habré تي اڳ ۾ ئي موجود آهي اشاعت هن پيڪيج لاء وقف ڪيو ويو، پر اهو 2015 تائين واپس اچي ٿو. ۽ مان توهان کي سڀ کان وڌيڪ موجوده تبديلين بابت ٻڌائڻ چاهيان ٿو، جن جو اعلان ڪجهه ڏينهن اڳ ڪيو ويو هو ان جي ليکڪ، هيڊلي وِڪم.
ايس جي: gather() ۽ spread() کي ختم ڪيو ويندو؟
هيڊلي ويڪھم: ڪنهن حد تائين. اسان هاڻي انهن ڪمن جي استعمال جي سفارش نه ڪنداسين ۽ انهن ۾ بگ کي درست ڪنداسين، پر اهي جاري رهندا پيڪيج ۾ انهن جي موجوده حالت ۾.
Contents
جيڪڏهن توهان ڊيٽا جي تجزيي ۾ دلچسپي رکو ٿا، توهان کي شايد دلچسپي وٺندي منهنجي ٽيليگرام и يوٽيوب چينل گهڻو ڪري مواد آر ٻولي لاء وقف آهي.
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()، اصل جدول ۾ اسٽاڪ ڪو به ڪالم دليلن ۾ درج ناهي نالا_ ڏانهن и values_to انهن جا نالا اقتباس جي نشانين ۾ هجڻ گهرجن.
هڪ ٽيبل جيڪا توهان کي آساني سان معلوم ڪرڻ ۾ مدد ڪندي ته نئين تصور سان ڪم ڪرڻ لاءِ ڪيئن سوئچ ڪجي صاف سٿرو.
ھن جدول ۾ جواب ڏيڻ وارن جي مذھب جي ڊيٽا قطارن ۾ آھي، ۽ آمدني جون سطحون ڪالمن جي نالن ۾ پکڙيل آھن. هر درجي کان جواب ڏيڻ وارن جو تعداد مذهب ۽ آمدني جي سطح جي چونڪ تي سيل جي قيمتن ۾ ذخيرو ٿيل آهي. ٽيبل کي صاف، صحيح شڪل ۾ آڻڻ لاء، اهو استعمال ڪرڻ ڪافي آهي pivot_longer():
پهريون دليل ڪالون، بيان ڪري ٿو ته ڪهڙن ڪالمن کي ملائڻ جي ضرورت آهي. انهي حالت ۾، سڀ ڪالمن کان سواء وقت.
دليل نالا_ ڏانهن variable جو نالو ڏئي ٿو جيڪو ڪالمن جي نالن مان ٺاهيو ويندو جيڪو اسان جوڙيو آهي.
values_to هڪ متغير جو نالو ڏئي ٿو جيڪو ضم ٿيل ڪالمن جي سيلن جي قيمتن ۾ محفوظ ڪيل ڊيٽا مان ٺاهيو ويندو.
وضاحت
هي پيڪيج جي هڪ نئين ڪارڪردگي آهي صاف سٿرو، جيڪو اڳ ۾ موجود نه هو جڏهن ميراثي افعال سان ڪم ڪري رهيو هو.
هڪ وضاحت هڪ ڊيٽا فريم آهي، جنهن جي هر قطار نئين پيداوار جي تاريخ جي فريم ۾ هڪ ڪالمن سان ملندو آهي، ۽ ٻه خاص ڪالمن جيڪي شروع ڪن ٿا:
.نالو اصل ڪالمن جو نالو شامل آهي.
قدر ڪالمن جو نالو شامل آھي جنھن ۾ سيل ويلز شامل آھن.
وضاحتن جا باقي ڪالم ظاهر ڪن ٿا ته نئون ڪالم ڪيئن ڪمپريس ٿيل ڪالمن جو نالو ڏيکاريندو .نالو.
تفصيل بيان ڪري ٿي ڪالمن جي نالي ۾ محفوظ ڪيل ميٽا ڊيٽا، هر ڪالم لاءِ هڪ قطار ۽ هر هڪ متغير لاءِ هڪ ڪالم، ڪالمن جي نالي سان ملائي، اها تعريف هن وقت مونجهارو لڳي سگهي ٿي، پر ڪجهه مثالن کي ڏسڻ کان پوءِ اهو گهڻو ٿي ويندو. وڌيڪ صاف.
وضاحت جو نقطو اهو آهي ته توهان ڊيٽا فريم کي تبديل ڪرڻ لاء نئين ميٽا ڊيٽا کي ٻيهر حاصل ڪري، تبديل ڪري، ۽ وضاحت ڪري سگھو ٿا.
وضاحتن سان ڪم ڪرڻ لاءِ جڏهن ٽيبل کي وسيع فارميٽ مان ڊگھي فارميٽ ۾ تبديل ڪريو، فنڪشن استعمال ڪريو 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
ٺاهيل تاريخ فريم هر قطار ۾ هڪ خاندان جي ٻارن جي ڊيٽا تي مشتمل آهي. خاندانن ۾ هڪ يا ٻه ٻار ٿي سگهن ٿا. هر ٻار لاءِ، ڄمڻ جي تاريخ ۽ جنس تي ڊيٽا مهيا ڪئي وئي آهي، ۽ هر ٻار جي ڊيٽا الڳ الڳ ڪالمن ۾ آهي؛ اسان جو ڪم اهو آهي ته هن ڊيٽا کي تجزيو لاءِ صحيح شڪل ۾ آڻيون.
مهرباني ڪري نوٽ ڪريو ته اسان وٽ هر ٻار جي باري ۾ معلومات سان گڏ ٻه متغير آهن: انهن جي جنس ۽ ڄمڻ جي تاريخ (قيامت سان ڪالم 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")) - ڪالمن کي ورهايو .نالو، جنهن ۾ ماخذ جي فيلڊ جا نالا شامل آهن، انڊر اسڪور استعمال ڪندي ۽ نتيجن جي قيمتن کي ڪالمن ۾ داخل ڪرڻ قدر и ٻار.
mutate(child = parse_number(child)) - فيلڊ جي قيمتن کي تبديل ڪريو ٻار متن کان عددي ڊيٽا جي قسم تائين.
ھاڻي اسان نتيجن واري وضاحت کي اصل ڊيٽا فريم تي لاڳو ڪري سگھون ٿا ۽ ٽيبل کي مطلوب شڪل ۾ آڻي سگھون ٿا.
اسان دليل استعمال ڪندا آهيون na.rm = TRUE، ڇاڪاڻ ته ڊيٽا جي موجوده شڪل غير موجود مشاهدن لاءِ اضافي قطارون ٺاهڻ تي مجبور ڪري ٿي. ڇاڪاڻ ته خاندان 2 ۾ صرف هڪ ٻار آهي، na.rm = TRUE ضمانت ڏئي ٿي ته خاندان 2 جي پيداوار ۾ هڪ قطار هوندي.
تاريخ جي فريم کي ڊگھي کان وسيع شڪل ۾ تبديل ڪرڻ
pivot_wider() - هڪ inverse transformation آهي، ۽ ان جي برعڪس تاريخ جي فريم جي ڪالمن جو تعداد وڌائي ٿو قطارن جو تعداد گھٽائي.
ڊيٽا کي صحيح شڪل ۾ آڻڻ لاءِ اهڙي قسم جي تبديلي تمام گهٽ استعمال ٿيندي آهي، جڏهن ته، هي ٽيڪنڪ پيش ڪيلن ۾ استعمال ٿيندڙ پيوٽ ٽيبل ٺاهڻ، يا ڪجهه ٻين اوزارن سان انضمام لاءِ ڪارائتو ٿي سگهي ٿي.
ظاهر ڪرڻ لاءِ ته فنڪشن ڪيئن ڪم ڪري ٿو 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 سان ڀريو ويندو.
بهرحال، هن معاملي ۾ اسان ڄاڻون ٿا ته رڪارڊ جي غير موجودگي جو مطلب آهي ته مڇيء کي نه ڏٺو ويو، تنهنڪري اسان دليل استعمال ڪري سگهون ٿا. values_fill فنڪشن ۾ 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
اسان جو ڪم ڊيٽا فريم کي وسعت ڏيڻ آهي ته جيئن هڪ ڪالمن ۾ پروڊڪٽ ۽ ملڪ جي هر ميلاپ لاءِ ڊيٽا هجي. هن کي ڪرڻ لاء، صرف دليل ۾ پاسو نالا_کان هڪ ویکٹر جنهن ۾ ضم ٿيڻ وارن شعبن جا نالا هجن.
#> # 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 لاءِ آمريڪا جي هر رياست لاءِ وچين آمدني ۽ ڪرائي جي معلومات تي مشتمل آهي (پيڪيج ۾ موجود ڊيٽا سيٽ صاف ڳڻپ).
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, اچ, آمدني_مو. ھن وضاحت کي ٺاھڻ جا ڪيترائي طريقا آھن، پر بنيادي نقطو اھو آھي ته اسان کي متغير قدرن جي ھر ميلاپ کي پيدا ڪرڻ جي ضرورت آھي ۽ اندازو/مو۽ پوء ڪالمن جو نالو ٺاھيو.
ڪڏهن ڪڏهن ڊيٽا سيٽ کي گهربل فارم ۾ آڻڻ لاء ڪيترن ئي قدمن جي ضرورت آهي.
ڊيٽا سيٽ world_bank_pop 2000 ۽ 2018 جي وچ ۾ هر ملڪ جي آبادي تي ورلڊ بئنڪ ڊيٽا شامل آهي.
اسان جو مقصد آهي هڪ صاف ڊيٽا سيٽ ٺاهي هر متغير سان ان جي پنهنجي ڪالمن ۾. اهو واضح ناهي ته ڪهڙن قدمن جي ضرورت آهي، پر اسان سڀ کان وڌيڪ واضح مسئلي سان شروع ڪنداسين: سال ڪيترن ئي ڪالمن ۾ پکڙيل آهي.
هن کي درست ڪرڻ لاءِ توهان کي فنڪشن استعمال ڪرڻو پوندو pivot_longer().
ھن لسٽ کي ترتيب ڏيڻ ڪافي مشڪل آھي ڇو ته ڪو به متغير نه آھي جيڪو سڃاڻي سگھي ته ڪھڙي ڊيٽا جو تعلق ڪھڙي رابطي سان آھي. اسان هن کي درست ڪري سگھون ٿا ته هر نئين رابطي جي ڊيٽا "نالو" سان شروع ٿئي ٿي، تنهنڪري اسان هڪ منفرد سڃاڻپ ڪندڙ ٺاهي سگهون ٿا ۽ ان کي وڌائي سگهون ٿا هر دفعي فيلڊ ڪالمن ۾ قيمت "نالو" شامل آهي:
#> # 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().