ProHoster > Блог > Gudanarwa > Fadada ginshiƙai - jeri-jeri ta amfani da yaren R (fakitin tidire da ayyuka na dangin rashin zaman lafiya)
Fadada ginshiƙai - jeri-jeri ta amfani da yaren R (fakitin tidire da ayyuka na dangin rashin zaman lafiya)
A mafi yawan lokuta, lokacin aiki tare da amsa da aka karɓa daga API, ko tare da duk wani bayanan da ke da tsarin bishiya mai rikitarwa, kuna fuskantar tsarin JSON da XML.
Waɗannan nau'ikan suna da fa'idodi da yawa: suna adana bayanai kaɗan kaɗan kuma suna ba ku damar guje wa kwafin bayanan da ba dole ba.
Rashin lahani na waɗannan sifofin shine rikitarwa na sarrafawa da bincike. Ba za a iya amfani da bayanan da ba a tsara su ba a cikin lissafi kuma ba za a iya gina gani a kai ba.
Wannan labarin ci gaba ne mai ma'ana na bugawa "R kunshin tidyr da sabbin ayyukan sa pivot_longer da pivot_wider". Zai taimaka muku kawo tsarin bayanan da ba a tsara su ba cikin sanannun kuma ya dace da sigar tambura ta amfani da fakitin tidyr, wanda aka haɗa a cikin ainihin ɗakin karatu tidyverse, da danginsa na ayyuka unnest_*().
Abubuwa
Idan kuna sha'awar nazarin bayanai, kuna iya sha'awar nawa telegram и youtube tashoshi. Yawancin abun ciki an sadaukar da shi ga yaren R.
Rectangling(bayanin fassarar, ban sami isassun zaɓuɓɓukan fassarar wannan kalmar ba, don haka za mu bar shi yadda yake.) tsari ne na kawo bayanan da ba a tsara su ba tare da tsararru na gida a cikin tebur mai girma biyu wanda ya ƙunshi layuka da ginshiƙai da aka saba. IN tidyr Akwai ayyuka da yawa waɗanda zasu taimaka muku faɗaɗa ginshiƙan jeri da rage bayanai zuwa nau'i na rectangular, tambura:
unnest_longer() yana ɗaukar kowane kashi na lissafin ginshiƙi kuma yana ƙirƙirar sabon layi.
unnest_wider() yana ɗaukar kowane kashi na lissafin ginshiƙi kuma yana ƙirƙirar sabon shafi.
unnest_auto() ta atomatik yana ƙayyade aikin da ya fi dacewa don amfani unnest_longer() ko unnest_wider().
hoist() kama da unnest_wider() amma yana zaɓar abubuwan da aka ƙayyade kawai kuma yana ba ku damar aiki tare da matakan gida da yawa.
Yawancin matsalolin da ke da alaƙa da kawo bayanan da ba a tsara su ba tare da matakan gida da yawa a cikin tebur mai girma biyu ana iya magance su ta hanyar haɗa ayyukan da aka lissafa tare da dplyr.
Don nuna waɗannan fasahohin, za mu yi amfani da kunshin repurrrsive, wanda ke ba da hadaddun abubuwa masu yawa, jerin matakai da aka samo daga API na yanar gizo.
Fara da gh_masu amfani, lissafin da ya ƙunshi bayanai game da masu amfani da GitHub guda shida. Da farko bari mu canza lissafin gh_masu amfani в tibble frame:
users <- tibble( user = gh_users )
Wannan yana da ɗan ƙima: me yasa samar da jeri gh_masu amfani, zuwa mafi hadaddun tsarin bayanai? Amma firam data yana da babbar fa'ida: Yana haɗu da masu tursasawa don haka duk abin da aka bincika a abu ɗaya.
Kowane abu kashi users jeri ne mai suna wanda kowane kashi yana wakiltar ginshiƙi.
A wannan yanayin, muna da tebur wanda ya ƙunshi ginshiƙai 30, kuma ba za mu buƙaci yawancin su ba, don haka za mu iya maimakon haka. unnest_wider() amfani hoist(). hoist() yana ba mu damar cire abubuwan da aka zaɓa ta amfani da maƙasudi iri ɗaya kamar purrr::pluck():
users %>% hoist(user,
followers = "followers",
login = "login",
url = "html_url"
)
#> # A tibble: 6 x 4
#> followers login url user
#> <int> <chr> <chr> <list>
#> 1 303 gaborcsardi https://github.com/gaborcsardi <named list [27]>
#> 2 780 jennybc https://github.com/jennybc <named list [27]>
#> 3 3958 jtleek https://github.com/jtleek <named list [27]>
#> 4 115 juliasilge https://github.com/juliasilge <named list [27]>
#> 5 213 leeper https://github.com/leeper <named list [27]>
#> 6 34 masalmon https://github.com/masalmon <named list [27]>
hoist() yana cire ƙayyadaddun abubuwan da aka ambata masu suna daga lissafin shafi mai amfanidon haka za ku iya yin la'akari hoist() kamar motsi abubuwan da aka haɗa daga lissafin ciki na firam ɗin kwanan wata zuwa babban matakinsa.
Ma'ajiyar Github
jeri jeri gh_repos mu fara haka ta hanyar maida shi zuwa tibble:
Wannan lokacin abubuwan mai amfani wakiltar jerin ma'ajin ajiya mallakar wannan mai amfani. Kowane ma'ajibi daban-daban lura ne, don haka bisa ga manufar m bayanai (kimanin bayanan tsafta) ya kamata su zama sabbin layi, shi ya sa muke amfani da su unnest_longer() amma ba 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
Yanzu za mu iya amfani unnest_wider() ko 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
Kula da amfani c("owner", "login"): Wannan yana ba mu damar samun darajar matakin matakin na biyu daga lissafin gida owner. Wata hanya ta dabam ita ce samun jerin duka owner sannan kayi amfani da aikin unnest_wider() sanya kowane abubuwansa cikin ginshiƙi:
Maimakon yin tunanin zabar aikin da ya dace unnest_longer() ko unnest_wider() za ka iya amfani unnest_auto(). Wannan aikin yana amfani da hanyoyi da yawa don zaɓar aikin da ya fi dacewa don canza bayanai, kuma yana nuna saƙo game da hanyar da aka zaɓa.
got_chars yana da tsari iri ɗaya zuwa gh_users: Wannan jerin jeri ne masu suna, inda kowane nau'in lissafin ciki ke bayyana wasu sifofi na halayen Wasan Al'arshi. Kawo got_chars Don kallon tebur, za mu fara da ƙirƙirar firam ɗin kwanan wata, kamar a cikin misalan da suka gabata, sannan mu canza kowane kashi zuwa wani ginshiƙi daban:
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>
tsarin got_chars da ɗan wahala fiye da gh_users, saboda wasu abubuwan lissafin char kansu jerin ne, a sakamakon haka muna samun ginshiƙai - lists:
Ayyukanku na gaba sun dogara da manufofin bincike. Wataƙila kana buƙatar sanya bayanai akan layukan kowane littafi da jerin abubuwan da halin ya bayyana:
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
Ko wataƙila kuna son ƙirƙirar tebur wanda zai ba ku damar daidaita halayen da aikin:
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
(Lura maras darajar "" a cikin filin title, wannan ya faru ne saboda kurakurai da aka yi lokacin shigar da bayanai got_chars: a haƙiƙa, haruffa waɗanda babu daidaitattun littattafai da jerin sunayen talabijin a cikin filin title dole ne ya kasance yana da vector mai tsayi 0, ba vector mai tsayi 1 mai ɗauke da kirtani mara komai ba.)
Za mu iya sake rubuta misalin da ke sama ta amfani da aikin unnest_auto(). Wannan hanya ta dace don bincike na lokaci ɗaya, amma bai kamata ku dogara ba unnest_auto() don amfani akai-akai. Ma'anar ita ce idan tsarin bayanan ku ya canza unnest_auto() zai iya canza tsarin sauya bayanan da aka zaɓa idan ya fara faɗaɗa ginshiƙan jeri zuwa layuka ta amfani da shi unnest_longer(), to, lokacin da tsarin bayanan mai shigowa ya canza, ana iya canza ma'anar a cikin ni'ima unnest_wider(), kuma yin amfani da wannan hanya a kan ci gaba na iya haifar da kurakurai da ba zato ba tsammani.
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 tare da Google
Na gaba, za mu kalli tsarin da ya fi rikitarwa na bayanan da aka samu daga sabis ɗin geocoding na Google. Shaidar caching ya sabawa ka'idodin aiki tare da API ɗin taswirorin Google, don haka zan fara rubuta abin rufewa mai sauƙi a kusa da API. Wanne ya dogara akan adana maɓallin API na Google Maps a cikin canjin yanayi; Idan ba ku da maɓalli don aiki tare da Google Maps API da aka adana a cikin masu canjin muhallinku, guntuwar lambar da aka gabatar a wannan sashe ba za a aiwatar da su ba.
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)
}
Lissafin da wannan aikin ya dawo yana da wahala sosai:
Abin farin ciki, za mu iya magance matsalar juyar da wannan bayanai zuwa tsarin tsari mataki-mataki ta amfani da ayyuka tidyr. Don sanya aikin ya zama ɗan ƙalubale da haƙiƙa, zan fara da geocoding wasu garuruwa:
city <- c ( "Houston" , "LA" , "New York" , "Chicago" , "Springfield" ) city_geo <- purrr::map (city, geocode)
Zan canza sakamakon da aka samu zuwa tibble, don dacewa, zan ƙara ginshiƙi tare da sunan birni daidai.
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]>
Matakin farko ya ƙunshi abubuwa status и result, wanda za mu iya fadada da shi 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
lura da cewa results jeri ne da yawa. Yawancin birane suna da kashi 1 (mai wakiltar ƙima ta musamman da ta dace da API ɗin geocoding), amma Springfield yana da biyu. Za mu iya ja su cikin layi daban-daban tare da 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
Yanzu duk suna da abubuwa iri ɗaya, waɗanda za'a iya tantance su ta amfani da su unnest_wider():
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
Za mu iya nemo latitude da longitude coordinates na kowane birni ta hanyar faɗaɗa jeri 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>
Sannan kuma wurin da kuke buƙatar fadadawa 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>
Duk da haka kuma, unnest_auto() yana sauƙaƙa aikin da aka kwatanta tare da wasu haɗari waɗanda ƙila za a iya haifar da su ta canza tsarin bayanan mai shigowa:
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>
Hakanan zamu iya duba adireshin farko na kowane birni:
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>
Ko amfani hoist() don nutsewar matakai da yawa don zuwa kai tsaye 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]>
Hoton hoto na Sharla Gelfand
A karshe, za mu dubi mafi hadaddun tsarin - discography na Sharla Gelfand. Kamar yadda yake a cikin misalan da ke sama, za mu fara da musanya lissafin zuwa firam ɗin bayanai na ginshiƙi ɗaya, sannan mu shimfiɗa shi ta yadda kowane bangare ya zama ginshiƙi daban. Hakanan na canza shafi date_added zuwa tsarin kwanan wata da lokaci da ya dace a cikin 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
A wannan matakin, muna samun bayanai game da lokacin da aka ƙara kowane fayafai zuwa hoton hoton Sharla, amma ba mu ga wani bayani game da waɗannan fayafai ba. Don yin wannan muna buƙatar fadada shafi basic_information:
discs %>% unnest_wider(basic_information)
#> Column name `id` must not be duplicated.
#> Use .name_repair to specify repair.
Abin takaici, za mu sami kuskure, saboda ... cikin lissafin basic_information akwai ginshiƙin suna iri ɗaya basic_information. Idan irin wannan kuskuren ya faru, don sanin dalilinsa da sauri, zaka iya amfani da shi names_repair = "unique":
Sannan zaku iya haɗa su zuwa saitunan bayanan asali kamar yadda ake buƙata.
ƙarshe
Zuwa ainihin ɗakin karatu tidyverse ya ƙunshi fakiti masu amfani da yawa waɗanda aka haɗa ta hanyar falsafar sarrafa bayanai gama gari.
A cikin wannan talifin mun bincika iyalin ayyuka unnest_*(), waɗanda ke da nufin yin aiki tare da cire abubuwa daga lissafin gida. Wannan fakitin ya ƙunshi wasu abubuwa masu amfani da yawa waɗanda ke sauƙaƙa sauya bayanai bisa ga ra'ayi Tsaftace Data.