ProHoster > Blag > Riarachán > R pacáiste tidyr agus a fheidhmeanna nua pivot_longer agus pivot_wider
R pacáiste tidyr agus a fheidhmeanna nua pivot_longer agus pivot_wider
Pacáiste slachtmhar san áireamh i gcroílár cheann de na leabharlanna is coitianta sa teanga R - slachtmhar.
Is é príomhchuspóir an phacáiste na sonraí a thabhairt i bhfoirm chruinn.
Ar fáil cheana féin ar Habré foilseachán tiomnaithe don phacáiste seo, ach téann sé siar go dtí 2015. Agus ba mhaith liom a insint duit faoi na hathruithe is déanaí, a d'fhógair a údar, Hedley Wickham cúpla lá ó shin.
SJK: An ndéanfar bailiú() agus scaipeadh() a dhímheas?
Hadley Wickham: Go pointe áirithe. Ní mholfaimid úsáid na bhfeidhmeanna seo a thuilleadh agus fabhtanna a shocrú iontu, ach leanfaidh siad de bheith i láthair sa phacáiste ina staid reatha.
Ábhar
Má tá suim agat in anailís sonraí, b'fhéidir go mbeadh suim agat i mo chuid teileagram и youtube cainéil. Tá an chuid is mó den ábhar tiomnaithe don teanga R.
Sprioc slachtmhar — cabhrú leat na sonraí a thabhairt chuig foirm néata mar a thugtar air. Sonraí is ea sonraí néata nuair:
Tá gach athróg i gcolún.
Is teaghrán é gach breathnóireacht.
Is cill gach luach.
Tá sé i bhfad níos éasca agus níos áisiúla oibriú le sonraí a chuirtear i láthair i sonraí slachtmhara agus anailís á déanamh.
Príomhfheidhmeanna san áireamh sa phacáiste slachtmhar
tá sraith feidhmeanna ag tidyr atá deartha chun táblaí a athrú:
fill() — luachanna atá in easnamh a líonadh i gcolún le luachanna roimhe seo;
separate() — roinntear réimse amháin ina roinnt ag baint úsáide as deighilteoir;
unite() — a fheidhmíonn an oibríocht trí roinnt réimsí a chomhcheangal in aon ghníomhaíocht inbhéartach na feidhme separate();
pivot_longer() — feidhm a thiontaíonn sonraí ó fhormáid leathan go formáid fhada;
pivot_wider() - feidhm a thiontaíonn sonraí ó fhormáid fhada go formáid leathan. Oibriú droim ar ais an ceann a dhéanann an fheidhm pivot_longer().
gather()imithe i léig — feidhm a thiontaíonn sonraí ó fhormáid leathan go formáid fhada;
spread()imithe i léig - feidhm a thiontaíonn sonraí ó fhormáid fhada go formáid leathan. Oibriú droim ar ais an ceann a dhéanann an fheidhm gather().
Coincheap nua chun sonraí a thiontú ó fhormáid leathan go formáid fhada agus vice versa
Roimhe seo, úsáideadh feidhmeanna don chineál seo claochlaithe gather() и spread(). Thar na blianta a bhí na feidhmeanna seo ann, ba léir don chuid is mó d’úsáideoirí, lena n-áirítear údar an phacáiste, nach raibh ainmneacha na bhfeidhmeanna seo agus a n-argóintí sách soiléir, agus ba chúis le deacrachtaí iad a aimsiú agus a thuiscint cé acu de na feidhmeanna sin a athraíonn. fráma dáta ó fhormáid leathan go formáid fhada, agus vice versa.
Maidir leis seo, in slachtmhar Tá dhá fheidhm nua, thábhachtacha curtha leis atá deartha chun frámaí dáta a athrú.
Gnéithe nua pivot_longer() и pivot_wider() spreag cuid de na gnéithe sa phacáiste iad cdata, cruthaithe ag John Mount agus Nina Zumel.
Suiteáil an leagan is déanaí de tidyr 0.8.3.9000
Chun an leagan nua, is déanaí den phacáiste a shuiteáil slachtmhar0.8.3.9000, áit a bhfuil gnéithe nua ar fáil, bain úsáid as an gcód seo a leanas.
devtools::install_github("tidyverse/tidyr")
Agus é seo á scríobh, níl na feidhmeanna seo ar fáil ach amháin sa leagan dev den phacáiste ar GitHub.
Aistriú chuig gnéithe nua
Go deimhin, níl sé deacair sean-scripteanna a aistriú chun oibriú le feidhmeanna nua; chun tuiscint níos fearr a fháil, tógfaidh mé sampla ó dhoiciméadú na seanfheidhmeanna agus taispeánfaidh mé conas a dhéantar na hoibríochtaí céanna ag baint úsáide as cinn nua pivot_*() feidhmeanna.
Tiontaigh formáid leathan go formáid fhada.
Cód samplach ó dhoiciméadú an fheidhm a bhailiú
# 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")
Formáid fhada a thiontú go formáid leathan.
Cód samplach ó dhoiciméadú feidhm leata
# old
stocks_spread <- stocks_gather %>% spread(key = stock,
value = price)
# new
stock_wide <- stocks_long %>% pivot_wider(names_from = "stock",
values_from = "price")
Mar sna samplaí thuas de bheith ag obair le pivot_longer() и pivot_wider(), sa tábla bunaidh stoic níl aon cholúin liostaithe sna hargóintí ainmneacha_chuig и luachanna_chuig caithfidh a n-ainmneacha a bheith i gcomharthaí athfhriotail.
Tábla a chabhróidh leat a dhéanamh amach go héasca conas athrú go dtí oibriú le coincheap nua slachtmhar.
Nóta ón údar
Tá an téacs ar fad thíos oiriúnaitheach, déarfainn fiú aistriúchán saor in aisce vignettes ó láithreán gréasáin oifigiúil na leabharlainne tidyverse.
Sampla simplí de shonraí a thiontú ó fhormáid leathan go formáid fhada
pivot_longer () — déanann sé tacair sonraí níos faide trí líon na gcolún a laghdú agus líon na rónna a mhéadú.
Chun na samplaí a chuirtear i láthair san alt a rith, ní mór duit na pacáistí riachtanacha a nascadh ar dtús:
library(tidyr)
library(dplyr)
library(readr)
Ligean le rá go bhfuil tábla againn le torthaí suirbhé a chuir (i measc rudaí eile) ceist ar dhaoine faoina reiligiún agus faoina n-ioncam bliantúil:
Sa tábla seo tá sonraí reiligiúin na bhfreagróirí i sraitheanna, agus tá leibhéil ioncaim scaipthe ar fud ainmneacha na gcolún. Stóráiltear líon na bhfreagróirí ó gach catagóir sna luachanna cille ag an áit a dtrasnaíonn reiligiún agus leibhéal ioncaim. Chun an tábla a thabhairt isteach i bhformáid néata, cheart, is leor é a úsáid pivot_longer():
An chéad argóint coiléar, cur síos ar na colúin is gá a chumasc. Sa chás seo, gach colún ach amháin am.
Argóint ainmneacha_chuig tugann sé ainm na hathróige a chruthófar ó ainmneacha na gcolún a chomhcheangail muid.
luachanna_chuig tugann sé ainm athróige a chruthófar ó na sonraí atá stóráilte i luachanna cealla na gcolún cumaiscthe.
Sonraíochtaí
Feidhmiúlacht nua den phacáiste é seo slachtmhar, nach raibh ar fáil roimhe seo agus tú ag obair le feidhmeanna oidhreachta.
Is fráma sonraí é sonraíocht, a gcomhfhreagraíonn gach sraith de do cholún amháin sa fhráma dáta aschuir nua, agus dhá cholún speisialta a thosaíonn le:
. Ainm tá bunainm an cholúin.
.luach ina bhfuil ainm an cholúin ina mbeidh na luachanna cille.
Léiríonn na colúin atá fágtha den tsonraíocht conas a thaispeánfaidh an colún nua ainm na gcolún comhbhrúite ó . Ainm.
Déanann an tsonraíocht cur síos ar na meiteashonraí atá stóráilte in ainm colún, le ró amháin do gach colún agus colún amháin do gach athróg, in éineacht le hainm an cholúin, d'fhéadfadh cuma mearbhall a bheith ar an sainmhíniú seo faoi láthair, ach tar éis breathnú ar roinnt samplaí beidh sé i bhfad níos soiléire.
Is é pointe na sonraíochta gur féidir leat meiteashonraí nua a aisghabháil, a mhodhnú agus a shainiú don fhráma sonraí atá á thiontú.
Chun oibriú le sonraíochtaí agus tábla á thiontú ó fhormáid leathan go formáid fhada, bain úsáid as an fheidhm pivot_longer_spec().
Is é an chaoi a n-oibríonn an fheidhm seo ná go dtógann sé aon fhráma dáta agus go ngineann sé a meiteashonraí ar an modh a thuairiscítear thuas.
Mar shampla, déanaimis an tacar sonraí cé a chuirtear ar fáil leis an bpacáiste a ghlacadh slachtmhar. Tá faisnéis sa tacar sonraí seo a chuir an eagraíocht idirnáisiúnta sláinte ar fáil ar mhinicíocht na heitinne.
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
Déanaimis a shonraíocht a thógáil.
spec <- who %>%
pivot_longer_spec(new_sp_m014:newrel_f65, values_to = "count")
Réimse tír, isoxnumx, isoxnumx atá ina n-athróga cheana féin. Is é an tasc atá againn ná na colúin a smeach le nua_sp_m014 ar nua_f65.
Stórálann ainmneacha na gcolún seo an t-eolas seo a leanas:
Réamhrá new_ le fios go bhfuil sonraí sa cholún ar chásanna nua eitinn, níl faisnéis sa fhráma dáta reatha ach ar ghalair nua, agus mar sin níl aon chiall leis an réimír seo sa chomhthéacs reatha.
sp/rel/sp/ep cur síos ar mhodh chun galar a dhiagnóisiú.
m/f inscne an othair.
014/1524/2535/3544/4554/65 raon aoise othar.
Is féidir linn na colúin seo a roinnt leis an bhfeidhm extract()ag baint úsáide as abairt rialta.
Ar deireadh, d'fhonn an tsonraíocht a chruthaigh muid a chur i bhfeidhm ar an bhfráma dáta bunaidh a caithfimid argóint a úsáid Sonraíocht i bhfeidhm 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
Is féidir gach rud a rinne muid díreach a léiriú go scéimreach mar seo a leanas:
Sonraíocht ag baint úsáide as luachanna iolracha (.value)
Sa sampla thuas, an colún sonraíochta .luach nach bhfuil ach luach amháin ann, is é seo an cás i bhformhór na gcásanna.
Ach ó am go chéile d’fhéadfadh cás teacht chun cinn nuair is gá duit sonraí a bhailiú ó cholúin le cineálacha éagsúla sonraí i luachanna. Ag baint úsáide as feidhm oidhreachta spread() bheadh sé seo deacair go leor a dhéanamh.
Tógtar an sampla thíos ó vignettes chuig an bpacáiste sonraí.tábla.
Tá sonraí sa bhfráma dáta cruthaithe ar leanaí de theaghlach amháin i ngach líne. D’fhéadfadh páiste amháin nó beirt a bheith ag teaghlaigh. I gcás gach linbh, soláthraítear sonraí ar dháta breithe agus inscne, agus tá na sonraí do gach leanbh i gcolúin ar leith; is é an tasc atá againn na sonraí seo a thabhairt go dtí an fhormáid cheart le haghaidh anailíse.
Tabhair faoi deara le do thoil go bhfuil dhá athróg againn le faisnéis faoi gach leanbh: a n-inscne agus dáta breithe (colúin leis an réimír DOP ina bhfuil dáta breithe, colúin le réimír inscne go bhfuil gnéas an linbh). Is é an toradh a bhfuiltear ag súil leis ná gur chóir go mbeadh siad le feiceáil i gcolúin ar leith. Is féidir linn é seo a dhéanamh trí shonraíocht a ghiniúint ina bhfuil an colún .value beidh dhá bhrí éagsúla.
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
Mar sin, déanaimis breathnú céim ar chéim ar na gníomhartha a dhéanann an cód thuas.
pivot_longer_spec(-family) — cruthaigh sonraíocht a chomhbhrúigh na colúin go léir atá ann cheana féin ach amháin an colún teaghlaigh.
separate(col = name, into = c(".value", "child")) - scoilt an colún . Ainm, ina bhfuil ainmneacha na réimsí foinse, ag baint úsáide as an underscore agus ag dul isteach na luachanna mar thoradh air isteach sna colúin .luach и leanbh.
mutate(child = parse_number(child)) — na luachanna allamuigh a athrú leanbh ó théacs go cineál sonraí uimhriúla.
Anois is féidir linn an tsonraíocht mar thoradh air a chur i bhfeidhm ar an bhfráma sonraí bunaidh agus an tábla a thabhairt chuig an bhfoirm atá ag teastáil.
Bainimid úsáid as argóint na.rm = TRUE, toisc go gcuireann foirm reatha na sonraí brú ar rónna breise a chruthú le haghaidh breathnuithe nach bhfuil ann. Mar níl ach leanbh amháin ag teaghlach 2, na.rm = TRUE ráthaíochtaí go mbeidh sraith amháin ag teaghlach 2 san aschur.
Frámaí dáta a thiontú ó fhormáid fhada go bhformáid leathan
pivot_wider() - is é an claochlú inbhéartach é, agus vice versa méadaítear líon na gcolún den fhráma dáta trí líon na sraitheanna a laghdú.
Is fíor-annamh a úsáidtear an cineál claochlaithe seo chun sonraí a thabhairt i bhfoirm chruinn, áfach, is féidir leis an teicníc seo a bheith úsáideach chun táblaí maighdeogacha a chruthú a úsáidtear i gcur i láthair, nó chun comhtháthú le roinnt uirlisí eile.
I ndáiríre na feidhmeanna pivot_longer() и pivot_wider() atá siméadrach, agus cuireann siad gníomhartha inbhéartach lena chéile, i.e.: df %>% pivot_longer(spec = spec) %>% pivot_wider(spec = spec) и df %>% pivot_wider(spec = spec) %>% pivot_longer(spec = spec) seolfaidh sé an bun df ar ais.
An sampla is simplí de tábla a thiontú go formáid leathan
Chun a léiriú conas a oibríonn an fheidhm pivot_wider() úsáidfimid an tacar sonraí fish_encounters, a stórálann faisnéis faoin gcaoi a ndéanann stáisiúin éagsúla taifead ar ghluaiseacht éisc feadh na habhann.
#> # 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
I bhformhór na gcásanna, beidh an tábla seo níos faisnéiseach agus níos fusa le húsáid má chuireann tú faisnéis do gach stáisiún i láthair i gcolún ar leith.
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>
Ní dhéanann an tacar sonraí seo ach faisnéis a thaifeadadh nuair a bhíonn iasc braite ag an stáisiún, i.e. más rud é nár thaifead stáisiún éigin aon iasc, ní bheidh na sonraí seo sa tábla. Ciallaíonn sé seo go líonfar an t-aschur le NA.
Mar sin féin, sa chás seo tá a fhios againn go gciallaíonn an easpa taifead nach raibh an t-iasc le feiceáil, mar sin is féidir linn úsáid a bhaint as an argóint luachanna_líon i bhfeidhm pivot_wider() agus líon na luachanna in easnamh seo le nialais:
Samhlaigh go bhfuil tábla againn ina bhfuil meascán de tháirge, de thír agus de bhliain. Chun fráma dáta tástála a ghiniúint, is féidir leat an cód seo a leanas a rith:
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
Is é an tasc atá againn ná an fráma sonraí a leathnú ionas go mbeidh sonraí le haghaidh gach teaglaim de tháirge agus de thír i gcolún amháin. Chun seo a dhéanamh, ach pas a fháil san argóint ainmneacha_ó veicteoir ina bhfuil ainmneacha na réimsí atá le cumasc.
Is féidir leat sonraíochtaí a chur i bhfeidhm ar fheidhm freisin pivot_wider(). Ach nuair a chuirtear faoi bhráid pivot_wider() déanann an tsonraíocht a mhalairt de chomhshó pivot_longer(): Na colúin atá sonraithe i . Ainm, ag baint úsáide as luachanna ó .luach agus colúin eile.
Maidir leis an tacar sonraí seo, is féidir leat sonraíocht shaincheaptha a ghiniúint más mian leat go mbeadh a cholún féin ag gach tír agus comhcheangal táirgí féideartha, ní hamháin na cinn atá sna sonraí:
#> # 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
Roinnt samplaí ardchéime de bheith ag obair leis an gcoincheap nua slachtmhar
Sonraí a ghlanadh ag úsáid tacar sonraí Ioncaim agus Cíosa Dhaonáireamh SAM mar shampla.
Tacar sonraí dúinn_cíos_ioncam ina bhfuil ioncam airmheánach agus faisnéis chíosa do gach stát sna SA don bhliain 2017 (tacar sonraí ar fáil sa phacáiste daonáireamh slachtmhar).
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
San fhoirm ina stóráiltear na sonraí sa tacar sonraí dúinn_cíos_ioncam tá sé thar a bheith deacair oibriú leo, mar sin ba mhaith linn tacar sonraí a chruthú le colúin: cíos, cíos_moe, Tar, ioncam_moe. Tá go leor bealaí ann chun an tsonraíocht seo a chruthú, ach is é an príomhphointe ná go gcaithfimid gach teaglaim de luachanna athraitheacha a ghiniúint agus meastachán/moeagus ansin ainm an cholúin a ghiniúint.
Uaireanta tá gá le roinnt céimeanna chun tacar sonraí a thabhairt isteach san fhoirm inmhianaithe.
Tacar sonraí world_banc_pop ina bhfuil sonraí an Bhainc Dhomhanda ar dhaonra gach tíre idir 2000 agus 2018.
Is é an sprioc atá againn ná tacar sonraí néata a chruthú le gach athróg ina cholún féin. Níl sé soiléir go díreach cad iad na céimeanna atá ag teastáil, ach cuirfimid tús leis an bhfadhb is soiléire: tá an bhliain scaipthe thar cholúin iolracha.
Chun é seo a shocrú ní mór duit an fheidhm a úsáid pivot_longer().
Is é an chéad chéim eile breathnú ar an athróg táscaire. 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
Nuair is fás daonra é SP.POP.GROW, is é SP.POP.TOTL an daonra iomlán, agus SP.URB. * an rud céanna, ach amháin do cheantair uirbeacha. Déanaimis na luachanna seo a roinnt ina dhá athróg: limistéar - achar (iomlán nó uirbeach) agus athróg ina bhfuil sonraí iarbhír (daonra nó fás):
Tá sé deacair go leor tábla a chur ar an liosta seo mar níl aon athróg ann a shainaithníonn cé na sonraí lena mbaineann an teagmháil. Is féidir linn é seo a shocrú trí thabhairt faoi deara go dtosaíonn sonraí gach teagmhálaí nua le "ainm", ionas gur féidir linn aitheantóir uathúil a chruthú agus é a mhéadú faoi cheann gach uair a bhfuil an luach "ainm" sa cholún réimse:
#> # 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
Anois agus aitheantas uathúil againn do gach teagmhálaí, is féidir linn an réimse agus an luach a iompú ina gcolúin:
#> # 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>
Conclúid
Is é mo thuairim phearsanta go bhfuil an coincheap nua slachtmhar i ndáiríre níos iomasach, agus i bhfad níos fearr ó thaobh feidhmiúlacht na feidhmeanna oidhreacht spread() и gather(). Tá súil agam gur chabhraigh an t-alt seo leat déileáil leis pivot_longer() и pivot_wider().