2017-08-25 3 views
1

dplyr,tidyrおよびpurrrを試しています。私は一度に複数の列を操作するためmutate_at()のようなものを行うことができますので、ネストされたデータフレーム列でmutate_at()を使用して複数のネストされていない列を生成する

library(tidyverse) 

set.seed(123) 
df <- data_frame(X1 = rep(LETTERS[1:4], 6), 
       X2 = sort(rep(1:6, 4)), 
       ref = sample(1:50, 24), 
       sampl1 = sample(1:50, 24), 
       var2 = sample(1:50, 24), 
       meas3 = sample(1:50, 24)) 

dplyrは素晴らしいです:私はこのようなデータを持っています。例:元のデータを保持したまま、私はこれらのサブテーブルをまとめることができpurrr

df <- df %>% nest(-X1) 

と感謝:

df <- df %>% 
    mutate_at(vars(-one_of(c("X1", "X2", "ref"))), funs(first = . - ref)) %>% 
    mutate_at(vars(contains("first")), funs(second = . *2)) 

tidyrは私の単一の列にサブテーブルなどのデータの巣のサブセットを可能に

​​

どのように私は、複数の要約columを生成するpurrrmutate_at()を使用することができます。ネストされた列でns(各ネストされたサブテーブルの異なる(ただしすべてではない)列の手段をとる)?

この例では、「second」という単語を持つすべての列の平均をとっておきたいと思います。これは新しいネストされた列を生成する可能性がありましたが、それはunnest()でしたが動作しません。

df %>% mutate(mean = map(data, ~ mutate_at(vars(contains("second")), 
              funs(mean_comp_exp = mean(.))))) 

どうすればこの問題を解決できますか?

+0

あなたは 'mutate_at'の最初の引数としてデータセットを渡すのを忘れ:' 〜mutate_at(.x、vars ...) ' – aosmith

答えて

0

@aosmithによってコメントを加えて正確で親切だった私は、私はそうのようsummarise_at()なくmutate_at()を使用するために必要な実現:

df %>% 
    mutate(mean = map(data, ~ summarise_at(.x, vars(contains("second")), 
               funs(mean_comp_exp = mean(.))))) %>% 
    unnest(mean) 
関連する問題