我们都知道R中的函数table
。我正在搜索一个函数,在使用table(x,y)
时获得相同的输出,但是不计算x和y的每个值组合的计数,但是另一个变量z。在data.table中,dt[,sum(z),by=c("x","y")]
可以实现这一点。但这并没有给我一个等于表(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
答案 0 :(得分: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
答案 1 :(得分: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