2016-12-20 27 views
5

मुझे फ़ंक्शन के साथ map() फ़ंक्शन का उपयोग करने में कुछ समस्याएं आ रही हैं।नेस्टेड डेटा फ्रेम में 'मानचित्र() `का उपयोग

मैं कुछ डेटा निम्नलिखित की तरह की स्थापना की है:

counter 

    counter   date_time total 
1 06032013 2013-06-03 16:00:00 476 
2 06032013 2013-06-03 17:00:00 578 
3 06032013 2013-06-03 18:00:00 406 
4 06032013 2013-06-03 19:00:00 272 
5 06032013 2013-06-03 20:00:00 240 
6 06032013 2013-06-03 21:00:00 96 
7 06032013 2013-06-03 22:00:00 67 
8 06032013 2013-06-03 23:00:00 37 
9 06032013 2013-06-04 00:00:00 10 
10 06032013 2013-06-04 01:00:00 11 
11 06032013 2013-06-04 02:00:00  8 
12 06032013 2013-06-04 03:00:00  9 
13 06032013 2013-06-04 04:00:00 23 
14 06032013 2013-06-04 05:00:00 83 
15 06032013 2013-06-04 06:00:00 291 
16 06032013 2013-06-04 07:00:00 532 
17 06032013 2013-06-04 08:00:00 434 
18 06032013 2013-06-04 09:00:00 326 
19 06032013 2013-06-04 10:00:00 310 
20 06032013 2013-06-04 11:00:00 292 

मैं तो counter क्षेत्र के आधार पर इन आंकड़ों नेस्ट। जैसे:

y <- counters %>% nest(-counter) 

y 

# A tibble: 140 × 2 
    counter    data 
     <chr>    <list> 
1 06032013 <tibble [91 × 2]> 
2 62295051 <tibble [310 × 2]> 
3 81295014 <tibble [301 × 2]> 
4 81295015 <tibble [294 × 2]> 
5 81295091 <tibble [303 × 2]> 
6 81295092 <tibble [306 × 2]> 
7 81313062 <tibble [142 × 2]> 
8 81313063 <tibble [142 × 2]> 
9 82295046 <tibble [139 × 2]> 
10 82295050 <tibble [141 × 2]> 

मुझे क्या करना चाहते हैं प्रत्येक नेस्टेड डेटा फ्रेम पर नक्शा है और मेरी नेस्टेड डेटा फ्रेम में एक XTS मैट्रिक्स का निर्माण।

y %>% mutate(stuff = map(xts(data$total, order.by = data$date_time))) 

मैं Error in data$date_time : object of type 'closure' is not subsettable के साथ स्वागत कर रहा हूँ: मैं निम्नलिखित कोड के कई रूपों की कोशिश की।

कोई भी विचार बहुत अच्छा होगा!

+3

गलत वाक्यविन्यास। इसे आज़माएं: 'y%>% mutate (stuff = map (डेटा, ~ xts (.x $ कुल, order.by = .x $ date_time))' –

+0

यदि आपको purrr का सूत्र सूत्र भ्रमित करने वाला लगता है, तो इसे मानक अनाम से तुलना करें फ़ंक्शन नोटेशन: 'y%>% mutate (stuff = map (डेटा, फ़ंक्शन (x) {xts (x $ कुल, order.by = x $ date_time)}) '। सुनिश्चित करें कि आप 'डेटा', उस सूची कॉलम का नाम पारित करें जिसे आप इसे फिर से चालू करना चाहते हैं, और फिर उस चर के माध्यम से 'डेटा' के प्रत्येक तत्व के भीतर डेटा को संदर्भित करें जिसे आप फ़ंक्शन पास कर रहे हैं ('.x' डिफ़ॉल्ट रूप से purrr में)। – alistaire

+0

@ माइकल ग्रिफिथ्स एक उत्तर लिखें? – alistaire

उत्तर

4

@ माइकल-ग्रिफिथ्स आपकी मदद के लिए धन्यवाद! निम्नलिखित कोड मेरे लिए काम किया:

y %>% mutate(stuff = map(data, ~xts(order.by = .x$date_time))) 

# A tibble: 140 × 3 
    counter    data  stuff 
    <fctr>    <list> <list> 
1 06032013 <tibble [91 × 2]> <S3: xts> 
2 62295051 <tibble [310 × 2]> <S3: xts> 
3 81295014 <tibble [301 × 2]> <S3: xts> 
4 81295015 <tibble [294 × 2]> <S3: xts> 
5 81295091 <tibble [303 × 2]> <S3: xts> 
6 81295092 <tibble [306 × 2]> <S3: xts> 
7 81313062 <tibble [142 × 2]> <S3: xts> 
8 81313063 <tibble [142 × 2]> <S3: xts> 
9 82295046 <tibble [139 × 2]> <S3: xts> 
10 82295050 <tibble [141 × 2]> <S3: xts> 
# ... with 130 more rows 

अभी भी 100% सुनिश्चित क्यों नहीं है। लेकिन हे, यह काम किया।

संबंधित मुद्दे