4

1つの列に貼り付けた、一緒に注文された約100,000のアイテムのリストがあるので、各組み合わせの発生回数を数えることができます。

4845   Curly Fries California Burger   1
4846   French Fries California Burger  1
4847   Hamburger California Burger     1
4848   $1 Fountain Drinks Curly Fries  1
4849   $1 Fountain Drinks Curly Fries  1
4850   California Burger Curly Fries   1
4851   Curly Fries Curly Fries         1

次のエラーが発生する集計関数を調べました。

aggregate(t1$count,list(t1$pc), sum) <br>
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list? <br>

ddplyのバリエーションも試しました。

ddply(t1,t1$pc,transform,occurances=sum(t1$count))

しかし、私はこのエラーを受け取ります

Error in UseMethod("as.quoted") : 
no applicable method for 'as.quoted' applied to an object of class "c('matrix', 'list')"

私は本質的に文字値で「グループ化」しようとしているので、これを取得すると想定しています。私も同様の質問への回答に基づいて調査しましたが、役に立ちませんでしたtapplyrecast

この組み合わせの数を取得するにはどうすればよいですか?

検討のために、個別にリストされたアイテムのサンプル(ここでも、フォーマットの問題についてお詫びします):

                   Var1                     Var2 Var3
>2               Onion Rings              Onion Rings    1
>3  Pineapple Cheddar Burger              Onion Rings    1
>4               Onion Rings Pineapple Cheddar Burger    1
>5  Pineapple Cheddar Burger Pineapple Cheddar Burger    1
>5              Onion Rings              Onion Rings     1
>6  Pineapple Cheddar Burger              Onion Rings    1
>7               Onion Rings Pineapple Cheddar Burger    1
>8  Pineapple Cheddar Burger Pineapple Cheddar Burger    1
>9             Fountain Soda            Fountain Soda    1
>10             French Fries            Fountain Soda    1
4

2 に答える 2

4

このtable()関数はここで役立ちます:

with(t1, table(pc)) ## or equivalently table(t1$pc)

これは、発生をカウントする因子変数であると想定しpcています。(それが要因でない場合、それは強制されます。)

于 2013-02-26T19:54:28.697 に答える
1

あなたの最初のアプローチは、私が望むものにかなり近いものでした。「フライドポテト、ハンバーガー」と「バーガー、フライドポテト」になってしまわないように、同じ順序で組み合わせれば、これらを1つの要素に組み合わせることは間違いなく機能します。

あなたがやりたいことをするもっと簡単な方法があるかもしれませんが、私はそれが何であるかを頭に入れていません。それにもかかわらず、私はこれがあなたが探していることをしていると思います:

# Let's assume your data looks like this:
> df
                       Var1                      Var2 Var3
1               Onion Rings               Onion Rings    1
2  Pineapple Cheddar Burger               Onion Rings    1
3               Onion Rings  Pineapple Cheddar Burger    1
4  Pineapple Cheddar Burger  Pineapple Cheddar Burger    1
5               Onion Rings               Onion Rings    1
6  Pineapple Cheddar Burger               Onion Rings    1
7               Onion Rings  Pineapple Cheddar Burger    1
8  Pineapple Cheddar Burger  Pineapple Cheddar Burger    1
9             Fountain Soda             Fountain Soda    1
10             French Fries             Fountain Soda    1

# Now, for each row
#     1. sort the Var1 and Var2,
#     2. combine the sorted vars, and
#     3. convert them back into a factor

df$sortcomb <- as.factor(apply(df[,1:2], 1, function(x) paste(sort(x), collapse=", ")))

table(df$sortcomb) # then use table as per normal

ddply(df, .(sortcomb), summarize, count=length(sortcomb)) # or ddply
于 2013-02-27T01:26:50.973 に答える