2017-01-12 7 views
0

私は回避方法がわからないネストとマッピングに問題があります。私は、ネストされたデータフレームのそれぞれにdef.increase列の合計を見つける必要がありマップでネストされたデータフレームに関数を適用する

> x 
# A tibble: 18 × 3 
    event.no    data dr.dur 
     <dbl>    <list> <int> 
1   1 <tibble [7 × 4]>  7 
2   4 <tibble [123 × 4]> 123 
3   5 <tibble [9 × 4]>  9 
4   7 <tibble [14 × 4]>  14 
5  10 <tibble [19 × 4]>  19 
6  11 <tibble [220 × 4]> 220 
7  12 <tibble [253 × 4]> 253 
8  14 <tibble [153 × 4]> 153 
9  15 <tibble [28 × 4]>  28 
10  17 <tibble [169 × 4]> 169 
11  18 <tibble [7 × 4]>  7 
12  19 <tibble [115 × 4]> 115 
13  21 <tibble [109 × 4]> 109 
14  25 <tibble [13 × 4]>  13 
15  26 <tibble [249 × 4]> 249 
16  28 <tibble [7 × 4]>  7 
17  30 <tibble [26 × 4]>  26 
18  31 <tibble [12 × 4]>  12 
> 
> x$data[[1]] 
# A tibble: 7 × 4 
    discharge threshold def.increase event.orig 
     <dbl>  <dbl>  <dbl>  <dbl> 
1  0.348  0.373  2160.0   1 
2  0.348  0.373  2160.0   1 
3  0.379  0.373  -518.4   0 
4  0.379  0.373  -518.4   0 
5  0.379  0.373  -518.4   0 
6  0.379  0.373  -518.4   0 
7  0.348  0.373  2160.0   2 
> 

次のように私は、ネストされたデータフレームとtibbleを持っています。

> x %>% 
+ mutate(dr.def = map(data, colSums)) %>% 
+ unnest(dr.def) 
# A tibble: 72 × 3 
    event.no dr.dur dr.def 
     <dbl> <int>  <dbl> 
1   1  7  2.560 
2   1  7  2.611 
3   1  7 4406.400 
4   1  7  4.000 
5   4 123 45.739 
6   4 123 45.879 
7   4 123 12096.000 
8   4 123 530.000 
9   5  9  3.269 
10  5  9  3.357 
# ... with 62 more rows 

は明らかにこれの問題は、私はすべての列からの和で終わるということです。私は今、この権利を行うための最善の方法のわからない、これは私がしようとしてきたものです。これは大丈夫でしょうが、後で私が望む行だけを選択するのはかなり面倒です。私の def.increase列それぞれの列合計を見つける良い方法はありますか?ご協力いただきありがとうございます:)

編集:(それが許可されていますならば)私がコピーできる場合は/ので、ここで私のxのようなオブジェクトを貼り付けるわからないがwetransfer上のRDSへのリンクです:https://wetransfer.com/downloads/9697fff593f51c02136bc704adccbcc220170112161115/5be1fc

答えて

3

あなただけに必要それはpersonall私のために少し明確に読み込むので、私は最初のオプションを好む

x %>% 
    mutate(dr.def = map_dbl(data, ~ sum(.x[["def.increase"]]))) 
+0

:1つのマップと

library(tidyverse) x %>% mutate(dr.def = map(data, "def.increase") %>% map_dbl(sum)) 

それとも:最初のdef.increase列を選択y。私はネストされたデータやマッピングを長い間使っていません。 'map_dbl'は知っておくと優れています - 私は' map'にサフィックスを付けることもできなかった – Visser

関連する問題