मैं उस डेटा से निपटने की कोशिश कर रहा हूं जिसमें मेरे पास एक टिबल है, जिसके भीतर मेरे पास कुछ अवलोकनों के लिए टिबल्स की एक सूची है। मैं इस सूची से डेटा निकालना चाहता हूं ताकि कुछ साफ डेटा हो।

यहाँ एक संक्षिप्त उदाहरण है:

data_1 <- tibble(year = c(2015, 2016), 
                 pop = c(100, 200))

data_2 <- tibble(year = c(2015, 2016), 
                 pop = c(300, 500))

data_combined <- list(data_1, data_2)

x <- tibble(country = (c('1', '2')), 
            data = data_combined)

print(x)
# A tibble: 2 x 2
  country data            
  <chr>   <list>          
1 1       <tibble [2 x 2]>
2 2       <tibble [2 x 2]>

print(x$data)
[[1]]
# A tibble: 2 x 2
   year   pop
  <dbl> <dbl>
1  2015   100
2  2016   200

[[2]]
# A tibble: 2 x 2
   year   pop
  <dbl> <dbl>
1  2015   300
2  2016   500

मैं जो चाहता हूं वह निम्नलिखित साफ डेटा प्रारूप है (मुझे कोई फर्क नहीं पड़ता कि यह डेटा.फ्रेम या टिबल है):

  country year pop
        1 2015 100
        1 2016 200
        2 2015 300
        2 2016 500

मुझे लगता है कि ऐसा करने का सबसे आसान तरीका है कि उस सूची को वापस कर दिया जाए जो y$data है, देश का क्षेत्र रखते हुए, और उस पर कॉल करें: do.call(rbind)। मुझे नहीं पता कि पहला भाग कैसे करना है।

शायद मुझे यह सब गलत लग रहा है और इस प्रारूप में डेटा होना उपयोगी है। यदि ऐसा है, और उनके भीतर tibles की सूचियों के साथ प्रभावी ढंग से tibles को संभालने का एक तरीका है, तो मैं उस पर किसी भी जानकारी का स्वागत करता हूं।

इन सबके लिए संदर्भ यह है कि मैं इस एपीआई द्वारा उत्पन्न डेटा से निपटने की कोशिश कर रहा हूं: https://cran.r-project.org/web/packages/eia/eia.pdf। एपीआई प्रत्येक कॉल के लिए केवल 100 पंक्तियों को उत्पन्न करने तक सीमित है। मुझे लगता है कि इस कारण से लेखकों ने प्रत्येक पंक्ति के लिए अधिक डेटा प्राप्त करने की अनुमति देने के लिए इस डेटा प्रारूप का उपयोग किया है। यदि आप एक सामान्य उदाहरण को समझना चाहते हैं तो नीचे देखें:

#load libraries
library("eia")
library("dplyr")

#set API key for the session
eia_set_key(key = "[YOUR_KEY_HERE]")

#select a variable of interest by looking through: eia_cats() -> eia_child_cats(2134384)
anth_production <- eia_cats(2134515) %>% #select data for Anthracite (as a list)
  .$childseries %>% #subset the childseries element of the list
  filter(units == "Million Metric Tons of Oil Equivalent") %>% #filter to only have MMTOe
  .$series_id #subset the IDs to use in the eia_series() call 

#call the eia_series() function of the API
anth_production_tibble <- eia_series(id = anth_production)

anth_production_tibble अब उसी प्रारूप में दिखाई देता है जिसे मैंने अपने प्रतिलिपि प्रस्तुत करने योग्य उदाहरण में ऊपर उत्पन्न किया था। मैं बाद के बिंदु पर 100 पंक्ति सीमा से निपटने के लिए एक फ़ंक्शन लिखूंगा।

1
MorrisseyJ 3 अक्टूबर 2019, 01:34

1 उत्तर

सबसे बढ़िया उत्तर

हम unnest का उपयोग कर सकते हैं

library(tidyr)
librar(dplyr)
x %>%
   unnest(data)
# A tibble: 4 x 3
#  country  year   pop
#  <chr>   <dbl> <dbl>
#1 1        2015   100
#2 1        2016   200
#3 2        2015   300
#4 2        2016   500
0
akrun 3 अक्टूबर 2019, 01:35