5

次のようなデータを持つ df があります。

sub = c("X001","X002", "X001","X003","X002","X001","X001","X003","X002","X003","X003","X002") 
month = c("201506", "201507", "201506","201507","201507","201508", "201508","201507","201508","201508", "201508", "201508") 
tech = c("mobile", "tablet", "PC","mobile","mobile","tablet", "PC","tablet","PC","PC", "mobile", "tablet") 
brand = c("apple", "samsung", "dell","apple","samsung","apple", "samsung","dell","samsung","dell", "dell", "dell")

revenue = c(20, 15, 10,25,20,20, 17,9,14,12, 9, 11)

df = data.frame(sub, month, brand, tech, revenue)

サブスクライバーと月をキーとして使用し、月ごとにサブスクライバーごとに 1 つの行を取得します。これは、その月のサブスクライバーの技術とブランドの一意の値の収益の合計を表示します。この例は単純化されており、膨大なデータ セットがあるため、列が少なくなっていdata.tableます。

これを使用して、技術またはブランドのいずれかの1つのカテゴリ列に対してこれを行うことができました。

df1 <- dcast(df, sub + month ~ tech,  fun=sum, value.var = "revenue")

しかし、私は2つ以上のcaqtogorical列に対してそれを行いたいので、これまでのところ私はこれを試しました:

df2 <- dcast(df, sub + month ~ tech+brand,  fun=sum, value.var = "revenue")

そして、そのためのカテゴリ列と合計の両方の一意の値を連結するだけですが、私はそれを望んでいません。すべてのカテゴリー列の一意の値ごとに個別の列が必要です。

私はRが初めてで、助けていただければ幸いです。

4

1 に答える 1