表中的表()由R中的组

时间:2015-01-07 10:49:22

标签: r

示例数据:

a <- sample(1:4, 100, replace = T)
b <- sample(0:1, 100, replace = T)

d <- data.frame(a, b)

我想自动为a的所有级别实现此输出:

table(d$b[d$a==1])
table(d$b[d$a==2])
table(d$b[d$a==3])
table(d$b[d$a==4])

我可以做一个for循环,但这不符合R的精神。

for (i in unique(d$a)) {
print(table(d$b[d$a==i]))
}

相反,我想在R中使用众多列表函数之一。 我尝试使用ddply包中的plyr

ddply(d, ~a, function(x) table(b))

但这与table(d$b)重复四次相同。

如何使用列表函数将table()函数应用于a中的每个组,最好是ddply

1 个答案:

答案 0 :(得分:3)

您可以将table与多个参数一起使用:

table(d$a,d$b)

     0  1
  1 15 10
  2  6 16
  3 13 10
  4 20 10

或者,如果你只想要在data.frame中列出数据,那么如果你传入data.frame,它会为你处理:

table(d)
   b
a    0  1
  1 15 10
  2  6 16
  3 13 10
  4 20 10