2

我们都知道tableR 中的函数。我正在寻找一个函数以在使用时获得相同的输出,table(x,y)但不是针对 x 和 y 的每个值组合的计数,而是针对另一个变量 z。在 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 回答