2016-12-20 9 views
5

map()関数とnest()関数を使用していくつか問題があります。ネストされたデータフレームで `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マトリックスを構築することです。私は次のコードの多くのバリエーションを試しました:Error in data$date_time : object of type 'closure' is not subsettableで迎えました。私はError in data$date_time : object of type 'closure' is not subsettableで迎えました。

どのような考えもすばらしいでしょう!

+3

構文が間違っています。 –

+0

purrrの数式表記がわかりにくい場合は、それを標準の匿名と比較してください(例:%y%%mutate(stuff、map、data、〜xts(.x $ total、order.by = .x $ date_time))) (データ、関数(x){xts(x $ total、order.by = x $ date_time}})) ')。 'data'を渡して、繰り返したいリスト列の名前を渡してから、関数を渡している変数を使って' data'の各要素内のデータを参照してください(デフォルトでは '.x' )。 – alistaire

+0

@MichaelGriffiths答えをお書きくださいか? – alistaire

答えて

4

@ Michael-Griffithsご協力いただきありがとうございます。次のコードは私のために働いた:

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%確かではない。しかし、ねえ、それは働いた。

関連する問題