ProHoster > Блог > Pagdumala > R package tidyr ug ang bag-ong mga function niini pivot_longer ug pivot_wider
R package tidyr ug ang bag-ong mga function niini pivot_longer ug pivot_wider
Pakete tiglimpyo gilakip sa kinauyokan sa usa sa labing inila nga mga librarya sa R nga pinulongan - tidyverse.
Ang panguna nga katuyoan sa pakete mao ang pagdala sa datos sa usa ka tukma nga porma.
Anaa na sa Habré publikasyon gipahinungod sa kini nga pakete, apan kini nagsugod kaniadtong 2015. Ug gusto nako isulti kanimo ang bahin sa labing bag-ong mga pagbag-o, nga gipahibalo pipila ka adlaw ang milabay sa tagsulat niini, si Hedley Wickham.
SJK: Ang gather() ug spread() ba dili na gamiton?
Hadley Wickham: Sa pipila ka sukod. Dili na namo irekomendar ang paggamit niini nga mga function ug ayohon ang mga bug sa kanila, apan sila magpadayon nga anaa sa package sa ilang kasamtangan nga kahimtang.
Mga sulod
Kung interesado ka sa pagtuki sa datos, mahimong interesado ka sa akong telegram и youtube mga kanal. Kadaghanan sa sulod gipahinungod sa R nga pinulongan.
Tumong tiglimpyo — tabangi ka nga madala ang datos sa usa ka gitawag nga hapsay nga porma. Ang hapsay nga datos mao ang datos diin:
Ang matag variable anaa sa usa ka kolum.
Ang matag obserbasyon usa ka hilo.
Ang matag kantidad usa ka cell.
Mas sayon ug mas sayon ang pagtrabaho sa mga datos nga gipresentar sa hapsay nga datos sa dihang nagpahigayon sa pagtuki.
Ang mga nag-unang gimbuhaton nga gilakip sa tidyr package
Ang tidyr adunay usa ka hugpong sa mga gimbuhaton nga gidisenyo aron mabag-o ang mga lamesa:
fill() - pagpuno sa nawala nga mga kantidad sa usa ka kolum nga adunay nauna nga mga kantidad;
separate() — nagbahin sa usa ka field ngadto sa pipila gamit ang separator;
unite() — nagpahigayon sa operasyon sa paghiusa sa pipila ka mga natad ngadto sa usa, ang inverse aksyon sa function separate();
pivot_longer() — usa ka function nga nagbag-o sa datos gikan sa halapad nga format hangtod sa taas nga format;
pivot_wider() - usa ka function nga nagbag-o sa datos gikan sa taas nga format hangtod sa lapad nga format. Ang reverse nga operasyon sa usa nga gihimo sa function pivot_longer().
gather()karaan na — usa ka function nga nagbag-o sa datos gikan sa halapad nga format hangtod sa taas nga format;
spread()karaan na - usa ka function nga nagbag-o sa datos gikan sa taas nga format hangtod sa lapad nga format. Ang reverse nga operasyon sa usa nga gihimo sa function gather().
Bag-ong konsepto alang sa pag-convert sa datos gikan sa lapad ngadto sa taas nga format ug vice versa
Kaniadto, ang mga gimbuhaton gigamit alang sa kini nga matang sa pagbag-o gather() и spread(). Sulod sa mga katuigan sa paglungtad niini nga mga gimbuhaton, kini nahimong dayag nga alang sa kadaghanan sa mga tiggamit, lakip na ang tagsulat sa package, ang mga ngalan niini nga mga gimbuhaton ug ang ilang mga argumento dili kaayo klaro, ug hinungdan sa mga kalisud sa pagpangita kanila ug sa pagsabut kon hain niini nga mga gimbuhaton nakabig. usa ka frame sa petsa gikan sa lapad ngadto sa taas nga pormat, ug vice versa.
Niining bahina, sa tiglimpyo Duha ka bag-o, hinungdanon nga mga gimbuhaton ang gidugang nga gidisenyo aron mabag-o ang mga frame sa petsa.
Bag-ong mga bahin pivot_longer() и pivot_wider() nadasig sa pipila ka bahin sa package cdata, gimugna ni John Mount ug Nina Zumel.
Pag-instalar sa pinakabag-o nga bersyon sa tidyr 0.8.3.9000
Aron ma-install ang bag-o, pinakabag-o nga bersyon sa package tiglimpyo0.8.3.9000, diin anaa ang bag-ong mga feature, gamita ang mosunod nga code.
devtools::install_github("tidyverse/tidyr")
Sa panahon sa pagsulat, kini nga mga gimbuhaton magamit ra sa bersyon sa dev sa package sa GitHub.
Pagbalhin ngadto sa bag-ong mga bahin
Sa tinuud, dili lisud ang pagbalhin sa daan nga mga script aron magtrabaho uban ang bag-ong mga gimbuhaton; alang sa mas maayo nga pagsabut, magkuha ako usa ka pananglitan gikan sa dokumentasyon sa mga daan nga gimbuhaton ug ipakita kung giunsa ang parehas nga mga operasyon gihimo gamit ang mga bag-o. pivot_*() mga gimbuhaton.
I-convert ang lapad nga format ngadto sa taas nga format.
Ehemplo nga code gikan sa gather function documentation
# 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")
Pag-convert sa taas nga format ngadto sa lapad nga format.
Pananglitan nga code gikan sa spread function documentation
# old
stocks_spread <- stocks_gather %>% spread(key = stock,
value = price)
# new
stock_wide <- stocks_long %>% pivot_wider(names_from = "stock",
values_from = "price")
Kay sa ibabaw nga mga pananglitan sa pagtrabaho uban sa pivot_longer() и pivot_wider(), sa orihinal nga lamesa Stocks walay mga kolum nga gilista sa mga argumento mga ngalan_sa и values_to ang ilang mga ngalan kinahanglang anaa sa mga marka sa kinutlo.
Usa ka lamesa nga makatabang kanimo nga dali nga mahibal-an kung giunsa ang pagbalhin sa pagtrabaho sa usa ka bag-ong konsepto tiglimpyo.
Pahinumdom gikan sa tagsulat
Ang tanan nga teksto sa ubos kay adaptive, bisan ako moingon nga libre nga paghubad mga vignette gikan sa opisyal nga tidyverse library website.
Usa ka yano nga pananglitan sa pag-convert sa datos gikan sa lapad ngadto sa taas nga format
pivot_longer () - naghimo sa mga set sa datos nga mas taas pinaagi sa pagkunhod sa gidaghanon sa mga kolum ug pagdugang sa gidaghanon sa mga laray.
Aron mapadagan ang mga pananglitan nga gipresentar sa artikulo, kinahanglan nimo una nga ikonektar ang kinahanglan nga mga pakete:
library(tidyr)
library(dplyr)
library(readr)
Ingnon ta nga kita adunay usa ka lamesa nga adunay mga resulta sa usa ka survey nga (lakip sa ubang mga butang) nangutana sa mga tawo bahin sa ilang relihiyon ug tinuig nga kita:
Kini nga lamesa naglangkob sa data sa relihiyon sa mga respondents sa mga laray, ug ang lebel sa kita nagkatag sa mga ngalan sa kolum. Ang gidaghanon sa mga respondents gikan sa matag kategorya gitipigan sa mga kantidad sa cell sa intersection sa relihiyon ug lebel sa kita. Aron madala ang lamesa sa usa ka hapsay, husto nga pormat, igo na nga gamiton pivot_longer():
Unang argumento kwelyo, naghulagway kung unsang mga kolum ang kinahanglan i-merge. Sa kini nga kaso, ang tanan nga mga kolum gawas panahon.
argumento mga ngalan_sa naghatag sa ngalan sa variable nga pagabuhaton gikan sa mga ngalan sa mga kolum nga among gihugpong.
values_to naghatag sa ngalan sa usa ka variable nga pagabuhaton gikan sa mga datos nga gitipigan sa mga kantidad sa mga selula sa gihiusa nga mga kolum.
Спецификации
Kini usa ka bag-ong gamit sa package tiglimpyo, nga kaniadto dili magamit kung nagtrabaho kauban ang mga kabilin nga gimbuhaton.
Ang espesipikasyon kay usa ka data frame, ang matag laray niini katumbas sa usa ka column sa bag-ong output date frame, ug duha ka espesyal nga column nga nagsugod sa:
.name naglangkob sa orihinal nga ngalan sa kolum.
.bili naglangkob sa ngalan sa kolum nga maglangkob sa mga kantidad sa cell.
Ang nahabilin nga mga kolum sa espesipikasyon nagpakita kung giunsa ipakita sa bag-ong kolum ang ngalan sa mga compressed column gikan sa .name.
Gihulagway sa espesipiko ang metadata nga gitipigan sa usa ka ngalan sa kolum, nga adunay usa ka laray sa matag kolum ug usa ka kolum alang sa matag variable, inubanan sa ngalan sa kolum, kini nga kahulugan mahimo’g makalibog sa pagkakaron, apan pagkahuman sa pagtan-aw sa pipila ka mga pananglitan kini mahimong labi ka daghan. mas klaro.
Ang punto sa espesipikasyon mao nga mahimo nimong makuha, usbon, ug ipasabut ang bag-ong metadata alang sa dataframe nga nakabig.
Aron magtrabaho uban ang mga detalye kung mag-convert sa usa ka lamesa gikan sa usa ka halapad nga format ngadto sa taas nga format, gamita ang function pivot_longer_spec().
Sa unsa nga paagi kini nga function naglihok mao nga kini nagkinahanglan sa bisan unsa nga petsa frame ug makamugna sa iyang metadata sa paagi nga gihulagway sa ibabaw.
Isip usa ka pananglitan, atong kuhaon ang kung kinsa ang dataset nga gihatag sa package tiglimpyo. Kini nga dataset adunay impormasyon nga gihatag sa internasyonal nga organisasyon sa panglawas bahin sa insidente sa tuberculosis.
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
Atong tukuron ang espesipikasyon niini.
spec <- who %>%
pivot_longer_spec(new_sp_m014:newrel_f65, values_to = "count")
kaumahan nasud, isoxnumx, isoxnumx mga variables na. Ang among tahas mao ang pag-flip sa mga kolum gamit ang bag-o_sp_m014 sa newrel_f65.
Ang mga ngalan niini nga mga kolum nagtipig sa mosunod nga impormasyon:
Prefix new_ nagpakita nga ang kolum naglangkob sa data sa bag-ong mga kaso sa tuberculosis, ang kasamtangan nga petsa frame naglangkob sa impormasyon lamang sa bag-ong mga sakit, mao nga kini nga prefix sa kasamtangan nga konteksto wala magdala sa bisan unsa nga kahulogan.
sp/rel/sp/ep naghulagway sa usa ka paagi sa pagdayagnos sa usa ka sakit.
m/f gender sa pasyente.
014/1524/2535/3544/4554/65 edad sa pasyente.
Mahimo natong bahinon kini nga mga kolum gamit ang function extract()gamit ang regular nga ekspresyon.
#> # 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
Palihug timan-i ang kolum .name kinahanglan magpabilin nga wala mausab tungod kay kini ang among indeks sa mga ngalan sa kolum sa orihinal nga dataset.
Kasarian ug edad (kolum gender и edad) adunay mga piho ug nahibal-an nga mga kantidad, busa girekomenda nga i-convert kini nga mga kolum sa mga hinungdan:
Sa katapusan, aron magamit ang detalye nga among gihimo sa orihinal nga frame sa petsa nga kinahanglan natong gamiton ang argumento detalye sa function 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
Ang tanan nga bag-o lang naton nahimo mahimo nga gihulagway nga eskematiko sama sa mosunod:
Pagtino gamit ang daghang mga kantidad (.value)
Sa pananglitan sa ibabaw, ang kolum sa espesipikasyon .bili adunay usa lamang ka bili, sa kadaghanang kaso mao kini ang kahimtang.
Apan usahay ang usa ka sitwasyon mahimong motumaw kung kinahanglan nimo nga mangolekta og datos gikan sa mga kolum nga adunay lainlaing mga tipo sa datos sa mga kantidad. Paggamit sa usa ka legacy function spread() lisud kini buhaton.
Ang pananglitan sa ubos gikuha gikan sa mga vignette ngadto sa pakete datos.tabla.
Ang gibuhat nga frame sa petsa adunay mga datos sa mga anak sa usa ka pamilya sa matag linya. Ang mga pamilya mahimong adunay usa o duha ka anak. Alang sa matag bata, ang datos gihatag sa petsa sa pagkahimugso ug gender, ug ang datos alang sa matag bata naa sa lainlain nga mga kolum; ang among tahas mao ang pagdala niini nga datos sa husto nga pormat alang sa pagtuki.
Palihug timan-i nga kami adunay duha ka mga variable nga adunay kasayuran bahin sa matag bata: ang ilang gender ug petsa sa pagkatawo (mga kolum nga adunay prefix pagkahuman adunay petsa sa pagkatawo, mga kolum nga adunay prefix gender naglangkob sa sekso sa bata). Ang gipaabot nga resulta mao nga sila kinahanglan nga makita sa lain nga mga kolum. Mahimo nato kini pinaagi sa paghimo og usa ka detalye diin ang kolum .value adunay duha ka lain-laing mga kahulogan.
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
Busa, atong tan-awon ang sunod-sunod nga mga aksyon nga gihimo sa code sa ibabaw.
pivot_longer_spec(-family) - paghimo og usa ka espesipikasyon nga nag-compress sa tanan nga anaa nga mga kolum gawas sa kolum sa pamilya.
separate(col = name, into = c(".value", "child")) - bahina ang kolum .name, nga naglangkob sa mga ngalan sa gigikanan nga mga natad, gamit ang underscore ug pagsulod sa mga sangputanan nga kantidad sa mga kolum. .bili и bata.
mutate(child = parse_number(child)) - pagbag-o sa mga kantidad sa uma bata gikan sa teksto ngadto sa numeric data type.
Karon mahimo na namon nga magamit ang sangputanan nga detalye sa orihinal nga dataframe ug dad-on ang lamesa sa gusto nga porma.
Gigamit namon ang argumento na.rm = TRUE, tungod kay ang kasamtangan nga porma sa datos nagpugos sa paghimo sa dugang nga mga laray alang sa wala'y mga obserbasyon. Kay ang pamilya 2 adunay usa ra ka anak, na.rm = TRUE naggarantiya nga ang pamilya 2 adunay usa ka laray sa output.
Pag-convert sa mga frame sa petsa gikan sa taas ngadto sa lapad nga format
pivot_wider() - mao ang inverse nga pagbag-o, ug vice versa nagdugang sa gidaghanon sa mga kolum sa frame sa petsa pinaagi sa pagkunhod sa gidaghanon sa mga laray.
Kini nga matang sa pagbag-o panagsa ra nga gigamit aron madala ang datos sa usa ka hapsay nga porma, bisan pa, kini nga teknik mahimong mapuslanon alang sa paghimo sa mga pivot table nga gigamit sa mga presentasyon, o alang sa paghiusa sa uban pang mga himan.
Sa tinuud ang mga gimbuhaton pivot_longer() и pivot_wider() mga simetriko, ug nagpatunghag mga aksyon nga balit-ad sa usag usa, i.e.: df %>% pivot_longer(spec = spec) %>% pivot_wider(spec = spec) и df %>% pivot_wider(spec = spec) %>% pivot_longer(spec = spec) ibalik ang orihinal nga df.
Ang pinakasimple nga pananglitan sa pag-convert sa usa ka lamesa ngadto sa lapad nga format
Aron ipakita kung giunsa ang paglihok pivot_wider() atong gamiton ang dataset fish_encounters, nga nagtipig og impormasyon kon giunsa pagrekord sa lainlaing mga estasyon ang paglihok sa mga isda ubay sa suba.
#> # 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
Sa kadaghanan nga mga kaso, kini nga lamesa mahimong labi ka impormatibo ug dali gamiton kung imong ipakita ang kasayuran alang sa matag estasyon sa usa ka lahi nga kolum.
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>
Kini nga data set nagrekord lamang sa impormasyon kung ang mga isda nakit-an sa estasyon, i.e. kung adunay mga isda nga wala natala sa usa ka estasyon, nan kini nga datos wala sa lamesa. Kini nagpasabot nga ang output mapuno sa NA.
Bisan pa, sa kini nga kaso nahibal-an namon nga ang pagkawala sa usa ka rekord nagpasabut nga ang isda wala makita, mao nga magamit namon ang argumento values_fill sa function pivot_wider() ug pun-a kining nawala nga mga kantidad sa mga sero:
Pagmugna og ngalan sa kolum gikan sa daghang mga baryable sa tinubdan
Hunahunaa nga kita adunay usa ka lamesa nga adunay usa ka kombinasyon sa produkto, nasud ug tuig. Aron makamugna og test date frame, mahimo nimong ipadagan ang mosunod nga code:
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
Ang among tahas mao ang pagpalapad sa data frame aron ang usa ka kolum adunay mga datos alang sa matag kombinasyon sa produkto ug nasud. Aron mahimo kini, ipasa lang ang argumento mga ngalan_gikan sa usa ka vector nga adunay mga ngalan sa mga field nga i-merge.
Mahimo usab nimo i-apply ang mga detalye sa usa ka function pivot_wider(). Apan sa dihang gisumite sa pivot_wider() ang detalye naghimo sa kaatbang nga pagkakabig pivot_longer(): Ang mga kolum nga gipiho sa .name, gamit ang mga kantidad gikan sa .bili ug uban pang mga kolum.
Alang sa kini nga dataset, mahimo kang makamugna og custom specification kung gusto nimo nga ang matag posible nga nasud ug kombinasyon sa produkto adunay kaugalingong column, dili lang ang anaa sa data:
#> # 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
Daghang mga advanced nga pananglitan sa pagtrabaho kauban ang bag-ong konsepto sa tidyr
Paglimpyo sa datos gamit ang US Census Income and Rent dataset isip pananglitan.
Set sa datos us_rent_income naglangkob sa median nga kinitaan ug impormasyon sa abang alang sa matag estado sa US alang sa 2017 (data set anaa sa package 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
Sa porma diin ang datos gitipigan sa dataset us_rent_income Ang pagtrabaho uban kanila hilabihan ka dili kombenyente, mao nga gusto namong maghimo ug data set nga adunay mga kolum: abang, rent_moe, moabut, kita_moe. Adunay daghang mga paagi sa paghimo niini nga detalye, apan ang panguna nga punto mao nga kinahanglan naton nga makamugna ang matag kombinasyon sa mga variable nga kantidad ug banabana/moeug dayon paghimo sa ngalan sa kolum.
Usahay ang pagdala sa usa ka set sa datos sa gusto nga porma nanginahanglan daghang mga lakang.
Dataset world_bank_pop naglangkob sa datos sa World Bank sa populasyon sa matag nasud tali sa 2000 ug 2018.
Ang among katuyoan mao ang paghimo usa ka hapsay nga set sa datos sa matag variable sa kaugalingon nga kolum. Dili klaro kung unsang mga lakang ang kinahanglan, apan magsugod kami sa labing klaro nga problema: ang tuig mikaylap sa daghang mga kolum.
Aron ayohon kini kinahanglan nimo nga gamiton ang function pivot_longer().
Ang sunod nga lakang mao ang pagtan-aw sa variable indicator. 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
Diin ang SP.POP.GROW mao ang pagtubo sa populasyon, ang SP.POP.TOTL mao ang kinatibuk-ang populasyon, ug ang SP.URB. * parehas nga butang, apan alang lamang sa mga urban nga lugar. Atong bahinon kini nga mga kantidad sa duha ka mga variable: area - area (total o urban) ug usa ka variable nga adunay aktwal nga datos (populasyon o pagtubo):
Ang pag-tabula niini nga lista lisud kaayo tungod kay wala’y variable nga nagpaila kung unsang datos ang nahisakop sa kung unsang kontak. Mahimo naton kini nga ayohon pinaagi sa pagtimaan nga ang datos alang sa matag bag-ong kontak nagsugod sa usa ka ngalan ("ngalan"), aron makahimo kami usa ka talagsaon nga identifier ug madugangan kini usa sa matag higayon nga ang kantidad nga "ngalan" makit-an sa kolum sa uma:
#> # 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
Karon nga kami adunay usa ka talagsaon nga ID alang sa matag kontak, mahimo namon nga himuon nga mga kolum ang uma ug kantidad:
#> # 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>
konklusyon
Ang akong personal nga opinyon mao nga ang bag-ong konsepto tiglimpyo tinuod nga mas intuitive, ug kamahinungdanon superyor sa functionality sa kabilin function spread() и gather(). Nanghinaut ko nga kini nga artikulo nakatabang kanimo sa pag-atubang niini pivot_longer() и pivot_wider().