示例数据:
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
?
答案 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