ProHoster > Blog > fitantanan-draharaha > Manitatra ny tsanganana misy akany - lisitra mampiasa ny fiteny R (fonosana tidyr sy ny asan'ny fianakaviana tsy hita maso)
Manitatra ny tsanganana misy akany - lisitra mampiasa ny fiteny R (fonosana tidyr sy ny asan'ny fianakaviana tsy hita maso)
Amin'ny ankabeazan'ny toe-javatra, rehefa miasa miaraka amin'ny valinteny azo avy amin'ny API, na miaraka amin'ny angona hafa izay manana firafitry ny hazo sarotra, dia miatrika endrika JSON sy XML ianao.
Ny tsy fahampian'ireo endrika ireo dia ny fahasarotan'ny fikarakarana sy ny famakafakana azy ireo. Ny angona tsy voarafitra dia tsy azo ampiasaina amin'ny kajikajy ary tsy azo aorina amin'izany ny sary.
Ity lahatsoratra ity dia tohin'ny lojika amin'ny famoahana "R package tidyr sy ny asany vaovao pivot_longer sy pivot_wider". Hanampy anao hitondra rafitra angon-drakitra tsy voarindra ho lasa mahazatra sy mety amin'ny endrika tabilao famakafakana amin'ny fampiasana ilay fonosana tidyr, tafiditra ao anatin'ny fototry ny tranomboky tidyverse, sy ny fianakaviamben'ny asany unnest_*().
afa-po
Raha liana amin'ny fanadihadiana angon-drakitra ianao dia mety ho liana amin'ny ahy telegrama и YouTube fantsona. Ny ankamaroan'ny votoaty dia natokana ho an'ny fiteny R.
Mba hampisehoana ireo teknika ireo dia hampiasa ny fonosana izahay repurrrsive, izay manome lisitra be pitsiny sy ambaratonga maro azo avy amin'ny API tranonkala.
Tamin'ity indray mitoraka ity ny singa mpampiasa maneho ny lisitr'ireo fitehirizana an'ity mpampiasa ity. Ny tahiry tsirairay dia fandinihana manokana, noho izany araka ny foto-kevitry ny angona madio (eo ho eo. angona milamina) tokony ho lasa tsipika vaovao izy ireo, izay no antony hampiasantsika unnest_longer() fa tsia unnest_wider():
repos <- repos %>% unnest_longer(repo)
repos
#> # A tibble: 176 x 1
#> repo
#> <list>
#> 1 <named list [68]>
#> 2 <named list [68]>
#> 3 <named list [68]>
#> 4 <named list [68]>
#> 5 <named list [68]>
#> 6 <named list [68]>
#> 7 <named list [68]>
#> 8 <named list [68]>
#> 9 <named list [68]>
#> 10 <named list [68]>
#> # … with 166 more rows
Afaka mampiasa isika izao unnest_wider() na hoist() :
repos %>% hoist(repo,
login = c("owner", "login"),
name = "name",
homepage = "homepage",
watchers = "watchers_count"
)
#> # A tibble: 176 x 5
#> login name homepage watchers repo
#> <chr> <chr> <chr> <int> <list>
#> 1 gaborcsardi after <NA> 5 <named list [65]>
#> 2 gaborcsardi argufy <NA> 19 <named list [65]>
#> 3 gaborcsardi ask <NA> 5 <named list [65]>
#> 4 gaborcsardi baseimports <NA> 0 <named list [65]>
#> 5 gaborcsardi citest <NA> 0 <named list [65]>
#> 6 gaborcsardi clisymbols "" 18 <named list [65]>
#> 7 gaborcsardi cmaker <NA> 0 <named list [65]>
#> 8 gaborcsardi cmark <NA> 0 <named list [65]>
#> 9 gaborcsardi conditions <NA> 0 <named list [65]>
#> 10 gaborcsardi crayon <NA> 52 <named list [65]>
#> # … with 166 more rows
Tandremo ny fampiasana c("owner", "login"): Izany dia ahafahantsika mahazo ny sanda ambaratonga faharoa amin'ny lisitra misy akany owner. Fomba iray hafa dia ny fahazoana ny lisitra manontolo owner ary avy eo mampiasa ny asa unnest_wider() ataovy ao anaty tsanganana ny singa tsirairay ao aminy:
Raha tokony hieritreritra momba ny fisafidianana ny asa tsara unnest_longer() na unnest_wider() azonao ampiasaina unnest_auto(). Ity fiasa ity dia mampiasa fomba heuristika maromaro hisafidianana ny fiasa mety indrindra amin'ny fanovana ny angon-drakitra, ary mampiseho hafatra momba ny fomba voafidy.
got_chars manana rafitra mitovy amin'ny gh_users: Ity dia lisitra voatonona anarana, izay ahitana singa tsirairay ao amin'ny lisitra anatiny mamaritra ny toetra sasany amin'ny toetran'ny Game of Thrones. mitondra got_chars Ho an'ny fijerena latabatra, manomboka amin'ny famoronana rindran-daty isika, toy ny tamin'ireo ohatra teo aloha, ary avy eo dia mamadika ny singa tsirairay ho tsanganana manokana:
chars <- tibble(char = got_chars)
chars
#> # A tibble: 30 x 1
#> char
#> <list>
#> 1 <named list [18]>
#> 2 <named list [18]>
#> 3 <named list [18]>
#> 4 <named list [18]>
#> 5 <named list [18]>
#> 6 <named list [18]>
#> 7 <named list [18]>
#> 8 <named list [18]>
#> 9 <named list [18]>
#> 10 <named list [18]>
#> # … with 20 more rows
chars2 <- chars %>% unnest_wider(char)
chars2
#> # A tibble: 30 x 18
#> url id name gender culture born died alive titles aliases father
#> <chr> <int> <chr> <chr> <chr> <chr> <chr> <lgl> <list> <list> <chr>
#> 1 http… 1022 Theo… Male Ironbo… In 2… "" TRUE <chr … <chr [… ""
#> 2 http… 1052 Tyri… Male "" In 2… "" TRUE <chr … <chr [… ""
#> 3 http… 1074 Vict… Male Ironbo… In 2… "" TRUE <chr … <chr [… ""
#> 4 http… 1109 Will Male "" "" In 2… FALSE <chr … <chr [… ""
#> 5 http… 1166 Areo… Male Norvos… In 2… "" TRUE <chr … <chr [… ""
#> 6 http… 1267 Chett Male "" At H… In 2… FALSE <chr … <chr [… ""
#> 7 http… 1295 Cres… Male "" In 2… In 2… FALSE <chr … <chr [… ""
#> 8 http… 130 Aria… Female Dornish In 2… "" TRUE <chr … <chr [… ""
#> 9 http… 1303 Daen… Female Valyri… In 2… "" TRUE <chr … <chr [… ""
#> 10 http… 1319 Davo… Male Wester… In 2… "" TRUE <chr … <chr [… ""
#> # … with 20 more rows, and 7 more variables: mother <chr>, spouse <chr>,
#> # allegiances <list>, books <list>, povBooks <list>, tvSeries <list>,
#> # playedBy <list>
rafitra got_chars somary sarotra kokoa noho ny gh_users, satria lisitry ny singa sasany char ny tenany dia lisitra, vokatr'izany dia mahazo andry - lisitra isika:
Miankina amin'ny tanjon'ny famakafakana ny zavatra ataonao fanampiny. Angamba mila mametraka fampahalalana momba ny andalana ho an'ny boky sy andian-dahatsoratra tsirairay izay ahitana ny toetra ianao:
chars2 %>%
select(name, books, tvSeries) %>%
pivot_longer(c(books, tvSeries), names_to = "media", values_to = "value") %>%
unnest_longer(value)
#> # A tibble: 180 x 3
#> name media value
#> <chr> <chr> <chr>
#> 1 Theon Greyjoy books A Game of Thrones
#> 2 Theon Greyjoy books A Storm of Swords
#> 3 Theon Greyjoy books A Feast for Crows
#> 4 Theon Greyjoy tvSeries Season 1
#> 5 Theon Greyjoy tvSeries Season 2
#> 6 Theon Greyjoy tvSeries Season 3
#> 7 Theon Greyjoy tvSeries Season 4
#> 8 Theon Greyjoy tvSeries Season 5
#> 9 Theon Greyjoy tvSeries Season 6
#> 10 Tyrion Lannister books A Feast for Crows
#> # … with 170 more rows
Na mety te hamorona latabatra ahafahanao mampifanaraka ny toetra sy ny asa ianao:
chars2 %>%
select(name, title = titles) %>%
unnest_longer(title)
#> # A tibble: 60 x 2
#> name title
#> <chr> <chr>
#> 1 Theon Greyjoy Prince of Winterfell
#> 2 Theon Greyjoy Captain of Sea Bitch
#> 3 Theon Greyjoy Lord of the Iron Islands (by law of the green lands)
#> 4 Tyrion Lannister Acting Hand of the King (former)
#> 5 Tyrion Lannister Master of Coin (former)
#> 6 Victarion Greyjoy Lord Captain of the Iron Fleet
#> 7 Victarion Greyjoy Master of the Iron Victory
#> 8 Will ""
#> 9 Areo Hotah Captain of the Guard at Sunspear
#> 10 Chett ""
#> # … with 50 more rows
(Mariho ireo soatoavina foana "" eny an-tsaha title, izany dia noho ny hadisoana natao tamin'ny fampidirana angona ao got_chars: raha ny marina, ireo endri-tsoratra izay tsy misy lohatenin'ny boky sy andian-dahatsoratra mifanaraka amin'izany eo amin'ny sehatra title tsy maintsy manana véctor ny halavany 0, fa tsy véctor ny halavany 1 misy ny tady foana.)
Azontsika atao ny mamerina manoratra ity ohatra etsy ambony ity amin'ny fampiasana ny fiasa unnest_auto(). Ity fomba ity dia mety amin'ny famakafakana indray mandeha, saingy tsy tokony hiantehitra amin'izany ianao unnest_auto() ampiasaina tsy tapaka. Ny teboka dia raha miova ny firafitry ny data unnest_auto() dia afaka manova ny rafitra fanovana angon-drakitra voafantina raha nanitatra ny tsanganana lisitra ho andalana izy tamin'ny voalohany unnest_longer(), dia rehefa miova ny firafitry ny angona miditra dia azo ovaina ny lojika unnest_wider(), ary ny fampiasana an'io fomba fiasa io tsy tapaka dia mety hiteraka fahadisoana tsy ampoizina.
tibble(char = got_chars) %>%
unnest_auto(char) %>%
select(name, title = titles) %>%
unnest_auto(title)
#> Using `unnest_wider(char)`; elements have 18 names in common
#> Using `unnest_longer(title)`; no element has names
#> # A tibble: 60 x 2
#> name title
#> <chr> <chr>
#> 1 Theon Greyjoy Prince of Winterfell
#> 2 Theon Greyjoy Captain of Sea Bitch
#> 3 Theon Greyjoy Lord of the Iron Islands (by law of the green lands)
#> 4 Tyrion Lannister Acting Hand of the King (former)
#> 5 Tyrion Lannister Master of Coin (former)
#> 6 Victarion Greyjoy Lord Captain of the Iron Fleet
#> 7 Victarion Greyjoy Master of the Iron Victory
#> 8 Will ""
#> 9 Areo Hotah Captain of the Guard at Sunspear
#> 10 Chett ""
#> # … with 50 more rows
Geocoding miaraka amin'ny Google
Manaraka izany dia hijery rafitra sarotra kokoa amin'ny angon-drakitra azo avy amin'ny serivisy geocoding Google isika. Mifanohitra amin'ny fitsipiky ny fiaraha-miasa amin'ny Google Maps API ny fahazoan-dàlana caching, noho izany dia hanoratra fonosana tsotra manodidina ny API aho aloha. Izay mifototra amin'ny fitehirizana ny fanalahidin'ny Google Maps API amin'ny fari-piainan'ny tontolo iainana; Raha tsy manana ny lakile hiasa amin'ny Google Maps API voatahiry ao amin'ny fari-piainan'ny tontolo iainanao ianao, dia tsy hotanterahina ireo sombin-kaody aseho ato amin'ity fizarana ity.
has_key <- !identical(Sys.getenv("GOOGLE_MAPS_API_KEY"), "")
if (!has_key) {
message("No Google Maps API key found; code chunks will not be run")
}
# https://developers.google.com/maps/documentation/geocoding
geocode <- function(address, api_key = Sys.getenv("GOOGLE_MAPS_API_KEY")) {
url <- "https://maps.googleapis.com/maps/api/geocode/json"
url <- paste0(url, "?address=", URLencode(address), "&key=", api_key)
jsonlite::read_json(url)
}
Soa ihany fa afaka mamaha ny olana amin'ny famadihana an'io data io amin'ny endrika tabilao tsikelikely isika amin'ny fampiasana fiasa tidyr. Mba hahatonga ny asa ho sarotra kokoa sy ho tena zava-misy, dia hanomboka amin'ny geocoding tanàna vitsivitsy aho:
city <- c ( "Houston" , "LA" , "New York" , "Chicago" , "Springfield" ) city_geo <- purrr::map (city, geocode)
Havadiko ho tibble, ho fanamorana dia hampiditra tsanganana misy ny anaran-tanàna mifanaraka amin'izany aho.
loc <- tibble(city = city, json = city_geo)
loc
#> # A tibble: 5 x 2
#> city json
#> <chr> <list>
#> 1 Houston <named list [2]>
#> 2 LA <named list [2]>
#> 3 New York <named list [2]>
#> 4 Chicago <named list [2]>
#> 5 Springfield <named list [2]>
Ny ambaratonga voalohany dia misy singa status и result, izay azontsika itarina unnest_wider() :
loc %>%
unnest_wider(json)
#> # A tibble: 5 x 3
#> city results status
#> <chr> <list> <chr>
#> 1 Houston <list [1]> OK
#> 2 LA <list [1]> OK
#> 3 New York <list [1]> OK
#> 4 Chicago <list [1]> OK
#> 5 Springfield <list [1]> OK
Mariho fa results dia lisitra misy ambaratonga maro. Ny ankamaroan'ny tanàna dia manana singa 1 (misolo tena sanda tokana mifanaraka amin'ny API geocoding), fa ny Springfield dia manana roa. Afaka misintona azy ireo amin'ny andalana samihafa isika unnest_longer() :
loc %>%
unnest_wider(json) %>%
unnest_longer(results)
#> # A tibble: 5 x 3
#> city results status
#> <chr> <list> <chr>
#> 1 Houston <named list [5]> OK
#> 2 LA <named list [5]> OK
#> 3 New York <named list [5]> OK
#> 4 Chicago <named list [5]> OK
#> 5 Springfield <named list [5]> OK
loc %>%
unnest_wider(json) %>%
unnest_longer(results) %>%
unnest_wider(results)
#> # A tibble: 5 x 7
#> city address_componen… formatted_addre… geometry place_id types status
#> <chr> <list> <chr> <list> <chr> <lis> <chr>
#> 1 Houst… <list [4]> Houston, TX, USA <named … ChIJAYWN… <lis… OK
#> 2 LA <list [4]> Los Angeles, CA… <named … ChIJE9on… <lis… OK
#> 3 New Y… <list [3]> New York, NY, U… <named … ChIJOwg_… <lis… OK
#> 4 Chica… <list [4]> Chicago, IL, USA <named … ChIJ7cv0… <lis… OK
#> 5 Sprin… <list [5]> Springfield, MO… <named … ChIJP5jI… <lis… OK
Afaka mahita ny latitude sy longitude coordinates isaky ny tanàna isika amin'ny alalan'ny fanitarana ny lisitra geometry:
loc %>%
unnest_wider(json) %>%
unnest_longer(results) %>%
unnest_wider(results) %>%
unnest_wider(geometry)
#> # A tibble: 5 x 10
#> city address_compone… formatted_addre… bounds location location_type
#> <chr> <list> <chr> <list> <list> <chr>
#> 1 Hous… <list [4]> Houston, TX, USA <name… <named … APPROXIMATE
#> 2 LA <list [4]> Los Angeles, CA… <name… <named … APPROXIMATE
#> 3 New … <list [3]> New York, NY, U… <name… <named … APPROXIMATE
#> 4 Chic… <list [4]> Chicago, IL, USA <name… <named … APPROXIMATE
#> 5 Spri… <list [5]> Springfield, MO… <name… <named … APPROXIMATE
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> # status <chr>
Ary avy eo ny toerana tokony hanitatra location:
loc %>%
unnest_wider(json) %>%
unnest_longer(results) %>%
unnest_wider(results) %>%
unnest_wider(geometry) %>%
unnest_wider(location)
#> # A tibble: 5 x 11
#> city address_compone… formatted_addre… bounds lat lng location_type
#> <chr> <list> <chr> <list> <dbl> <dbl> <chr>
#> 1 Hous… <list [4]> Houston, TX, USA <name… 29.8 -95.4 APPROXIMATE
#> 2 LA <list [4]> Los Angeles, CA… <name… 34.1 -118. APPROXIMATE
#> 3 New … <list [3]> New York, NY, U… <name… 40.7 -74.0 APPROXIMATE
#> 4 Chic… <list [4]> Chicago, IL, USA <name… 41.9 -87.6 APPROXIMATE
#> 5 Spri… <list [5]> Springfield, MO… <name… 37.2 -93.3 APPROXIMATE
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> # status <chr>
Mbola indray koa, unnest_auto() manatsotra ny asa voalaza miaraka amin'ny risika sasany mety ateraky ny fanovana ny firafitry ny angona miditra:
loc %>%
unnest_auto(json) %>%
unnest_auto(results) %>%
unnest_auto(results) %>%
unnest_auto(geometry) %>%
unnest_auto(location)
#> Using `unnest_wider(json)`; elements have 2 names in common
#> Using `unnest_longer(results)`; no element has names
#> Using `unnest_wider(results)`; elements have 5 names in common
#> Using `unnest_wider(geometry)`; elements have 4 names in common
#> Using `unnest_wider(location)`; elements have 2 names in common
#> # A tibble: 5 x 11
#> city address_compone… formatted_addre… bounds lat lng location_type
#> <chr> <list> <chr> <list> <dbl> <dbl> <chr>
#> 1 Hous… <list [4]> Houston, TX, USA <name… 29.8 -95.4 APPROXIMATE
#> 2 LA <list [4]> Los Angeles, CA… <name… 34.1 -118. APPROXIMATE
#> 3 New … <list [3]> New York, NY, U… <name… 40.7 -74.0 APPROXIMATE
#> 4 Chic… <list [4]> Chicago, IL, USA <name… 41.9 -87.6 APPROXIMATE
#> 5 Spri… <list [5]> Springfield, MO… <name… 37.2 -93.3 APPROXIMATE
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> # status <chr>
Azontsika jerena ihany koa ny adiresy voalohany ho an'ny tanàna tsirairay:
loc %>%
unnest_wider(json) %>%
hoist(results, first_result = 1) %>%
unnest_wider(first_result) %>%
unnest_wider(geometry) %>%
unnest_wider(location)
#> # A tibble: 5 x 11
#> city address_compone… formatted_addre… bounds lat lng location_type
#> <chr> <list> <chr> <list> <dbl> <dbl> <chr>
#> 1 Hous… <list [4]> Houston, TX, USA <name… 29.8 -95.4 APPROXIMATE
#> 2 LA <list [4]> Los Angeles, CA… <name… 34.1 -118. APPROXIMATE
#> 3 New … <list [3]> New York, NY, U… <name… 40.7 -74.0 APPROXIMATE
#> 4 Chic… <list [4]> Chicago, IL, USA <name… 41.9 -87.6 APPROXIMATE
#> 5 Spri… <list [5]> Springfield, MO… <name… 37.2 -93.3 APPROXIMATE
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> # status <chr>
Na mampiasa hoist() ho an'ny fitsirihana multilevel handehanana mivantana lat и lng.
loc %>%
hoist(json,
lat = list("results", 1, "geometry", "location", "lat"),
lng = list("results", 1, "geometry", "location", "lng")
)
#> # A tibble: 5 x 4
#> city lat lng json
#> <chr> <dbl> <dbl> <list>
#> 1 Houston 29.8 -95.4 <named list [2]>
#> 2 LA 34.1 -118. <named list [2]>
#> 3 New York 40.7 -74.0 <named list [2]>
#> 4 Chicago 41.9 -87.6 <named list [2]>
#> 5 Springfield 37.2 -93.3 <named list [2]>
Discography of Sharla Gelfand
Farany, hojerentsika ny rafitra sarotra indrindra - ny discography an'i Sharla Gelfand. Toy ny amin'ireo ohatra etsy ambony, dia manomboka amin'ny famadihana ny lisitra ho tsanganana angon-drakitra tokana isika, ary avy eo dia manitatra izany mba ho tsanganana misaraka ny singa tsirairay. Ovaiko koa ny tsanganana date_added amin'ny endrika daty sy ora mety amin'ny R.
discs <- tibble(disc = discog) %>%
unnest_wider(disc) %>%
mutate(date_added = as.POSIXct(strptime(date_added, "%Y-%m-%dT%H:%M:%S")))
discs
#> # A tibble: 155 x 5
#> instance_id date_added basic_information id rating
#> <int> <dttm> <list> <int> <int>
#> 1 354823933 2019-02-16 17:48:59 <named list [11]> 7496378 0
#> 2 354092601 2019-02-13 14:13:11 <named list [11]> 4490852 0
#> 3 354091476 2019-02-13 14:07:23 <named list [11]> 9827276 0
#> 4 351244906 2019-02-02 11:39:58 <named list [11]> 9769203 0
#> 5 351244801 2019-02-02 11:39:37 <named list [11]> 7237138 0
#> 6 351052065 2019-02-01 20:40:53 <named list [11]> 13117042 0
#> 7 350315345 2019-01-29 15:48:37 <named list [11]> 7113575 0
#> 8 350315103 2019-01-29 15:47:22 <named list [11]> 10540713 0
#> 9 350314507 2019-01-29 15:44:08 <named list [11]> 11260950 0
#> 10 350314047 2019-01-29 15:41:35 <named list [11]> 11726853 0
#> # … with 145 more rows
Amin'ity ambaratonga ity dia mahazo fampahalalana momba ny fotoana nampidirana ny kapila tsirairay tao amin'ny discography an'i Sharla izahay, saingy tsy mahita angona momba ireo kapila ireo izahay. Mba hanaovana izany dia mila manitatra ny tsanganana isika basic_information:
discs %>% unnest_wider(basic_information)
#> Column name `id` must not be duplicated.
#> Use .name_repair to specify repair.
Indrisy anefa fa hisy fahadisoana isika, satria... ao anaty lisitra basic_information misy tsanganana mitovy anarana basic_information. Raha misy fahadisoana toy izany, mba hamaritana haingana ny antony, dia azonao ampiasaina names_repair = "unique":
Ny olana dia izay basic_information mamerina ny tsanganana id izay voatahiry ao amin'ny ambaratonga ambony ihany koa, ka azontsika esorina fotsiny izany:
discs %>%
hoist(basic_information,
title = "title",
year = "year",
label = list("labels", 1, "name"),
artist = list("artists", 1, "name")
)
#> # A tibble: 155 x 9
#> instance_id date_added title year label artist
#> <int> <dttm> <chr> <int> <chr> <chr>
#> 1 354823933 2019-02-16 17:48:59 Demo 2015 Tobi… Mollot
#> 2 354092601 2019-02-13 14:13:11 Obse… 2013 La V… Una B…
#> 3 354091476 2019-02-13 14:07:23 I 2017 La V… S.H.I…
#> 4 351244906 2019-02-02 11:39:58 Oído… 2017 La V… Rata …
#> 5 351244801 2019-02-02 11:39:37 A Ca… 2015 Kato… Ivy (…
#> 6 351052065 2019-02-01 20:40:53 Tash… 2019 High… Tashme
#> 7 350315345 2019-01-29 15:48:37 Demo 2014 Mind… Desgr…
#> 8 350315103 2019-01-29 15:47:22 Let … 2015 Not … Phant…
#> 9 350314507 2019-01-29 15:44:08 Sub … 2017 Not … Sub S…
#> 10 350314047 2019-01-29 15:41:35 Demo 2017 Pres… Small…
#> # … with 145 more rows, and 3 more variables: basic_information <list>,
#> # id <int>, rating <int>
Eto aho dia maka haingana ny marika voalohany sy ny anaran'ny mpanakanto amin'ny alàlan'ny fanondroana amin'ny alàlan'ny fitsirihana ao anaty lisitra misy akany.
Ny fomba fiasa mirindra kokoa dia ny famoronana tabilao misaraka ho an'ny mpanakanto sy ny marika:
Azonao atao ny mampiditra azy ireo hiverina amin'ny angon-drakitra tany am-boalohany raha ilaina.
famaranana
Any amin'ny fototry ny tranomboky tidyverse ahitana fonosana mahasoa maro mitambatra amin'ny filozofia fanodinana angon-drakitra mahazatra.
Ato amin'ity lahatsoratra ity isika dia nandinika ny fianakaviana ny asa unnest_*(), izay mikendry ny hiasa amin'ny fitrandrahana singa avy amin'ny lisitra misy akany. Ity fonosana ity dia misy endri-javatra mahasoa maro hafa izay manamora ny famadihana angona araka ny foto-kevitra Tidy Data.