2

私たちは皆、R の関数を知っています。x と y の値の各組み合わせのカウントではなく、別の変数 z をtable使用するときに同じ出力を取得する関数を探しています。table(x,y)data.table では、 によってこれが可能dt[,sum(z),by=c("x","y")]です。しかし、それは table(x,y)- 出力に等しい出力を私に与えません。dcast を試しましたが、必要なものが得られませんでした

 dt <- data.table(y=rep(letters[1:2],each=3),x=rep(letters[1:2],length=6),z=rep(letters [7],length=6))  
   y x z
1: a a g
2: a b g
3: a a g
4: b b g
5: b a g
6: b b g

この出力が必要ですが、g のカウントがあります。

    y
 x   a b
   a 2 1
   b 1 2

これらの結果が欲しいのですが、表の形式で:

   x y V1
1: a a  2
2: b a  1
3: b b  2
4: a b  1
4

2 に答える 2

2
DF <- data.frame(y=rep(letters[1:2],each=3),
                 x=rep(letters[1:2],length=6),
                 z=rep(letters [7],length=6)) 

tapply(X=DF$z, INDEX=list(DF$x, DF$y), FUN=length)
#  a b
#a 2 1
#b 1 2
于 2013-08-28T08:34:29.353 に答える
1

パッケージ「plyr」を使用して試すことができます

 install.packages('plyr');
 library('plyr');
 ddply(dt,.variables=c("y","x"),.fun=count)[,c(1:2,4)];

与える

   y x freq
 1 a a  2
 2 a b  1
 3 b a  1
 4 b b  2
于 2013-08-28T09:00:26.757 に答える