3

データの組み合わせに対して同じタイプのグラフを作成したいと思います。現在、私はplyrデータを分割し、組み合わせごとにいくつかのコードを実行するために使用しています。

たとえば、dataframe会社、部門、地域、および収益があるとします。これが私の擬似コードです:

     d_ply(dataframe, .(company),  function(df) {
      d_ply(df, .(department),  function(df) {
        d_ply(df, .(region), function(df) {
           bar_chart(df$region, df$revenue)
        })
            bar_chart(df$department, df$revenue)
      })
            bar_chart(df$company, df$revenue)
    })

私の実際の例では、複数のことを行う必要があり、コードは10行ほどです。関数を作成して適切なパラメーターを渡す以外に、各組み合わせでコードを繰り返さないようにする方法はありますか?plyr魔法のトリックがあることを期待していました。

4

1 に答える 1

1

ダミーデータ:

d <- data.frame(company=letters[1:26],
                department=sample(letters[1:10],26,replace=TRUE),
                region=sample(letters[1:3],26,replace=TRUE),
                revenue=round(runif(26)*10000))

アップデート

あなたのコードの説明が必要だと思います:

d_ply(dataframe, .(company),  function(df) { # by company
      d_ply(df, .(department),  function(df) { # by department
        d_ply(df, .(region), function(df) { # by region
           bar_chart(df$region, df$revenue)
           # this part is essentially equal to
           # d_ply(df, .(company,department,region), function(df), plot(df)) 
    })
  bar_chart(df$department, df$revenue)
  # this part is essentially equal 
  # d_ply(df,.(company,department), function(df), fun(df))
  })
 bar_chart(df$company, df$revenue)
 # this part is essentially equal to 
 # d_ply(df,.(company), function(df), fun(df))
})

あなたのコードは非常に読みにくいと思います。次のように置き換えることができます。

some.fun <- function(df, ...) {
# ...
}

d_ply(d, .(company), function(df) some.fun(df, ...))
d_ply(d, .(company,department), function(df) some.fun(df, ...)) 
d_ply(d, .(company,department,region), function(df) some.fun(df, ...))
于 2012-12-13T19:26:36.810 に答える