R中分类变量的行摘要

时间:2011-07-13 22:50:57

标签: r summary

我有以下矩阵

coin.flip<-expand.grid(c("H","T"),c("H","T"),c("H","T"),c("H","T"))

> coin.flip
   Var1 Var2 Var3 Var4
1     H    H    H    H
2     T    H    H    H
3     H    T    H    H
4     T    T    H    H
5     H    H    T    H
6     T    H    T    H
7     H    T    T    H
8     T    T    T    H
9     H    H    H    T
10    T    H    H    T
11    H    T    H    T
12    T    T    H    T
13    H    H    T    T
14    T    H    T    T
15    H    T    T    T
16    T    T    T    T

我想得到H和T的计数的逐行摘要。我还想要一张表中有多少行有1个T,2个T等等......

非常感谢!我一直在寻找这个答案,但还没有找到任何东西。

3 个答案:

答案 0 :(得分:4)

> coin.flip$total_H <- rowSums(coin.flip=="H")
> coin.flip
   Var1 Var2 Var3 Var4 total_H
1     H    H    H    H       4
2     T    H    H    H       3
3     H    T    H    H       3
4     T    T    H    H       2
5     H    H    T    H       3
....snipped
> table(coin.flip$total_H)

0 1 2 3 4 
1 4 6 4 1    

Total T's table is just
> table(4- coin.flip$total_H )

0 1 2 3 4 
1 4 6 4 1     # boringly similar to total H table

答案 1 :(得分:2)

以下是使用apply然后使用table的方法:

rs <- t(apply(coin.flip,1,function(x){c(length(which(x=='H')),length(which(x=='T')))}))
table(rs[,2])

我转换了apply的结果,因为这可能是您希望它们显示的方式。

答案 2 :(得分:1)

严格coin.flip是data.frame而不是矩阵。

您可以使用DWin的解决方案。另一种方法是

> summary(t(coin.flip))
 V1    V2    V3    V4    V5    V6    V7    V8    V9    V10   V11   V12   V13   V14   V15   V16  
 H:4   H:3   H:3   H:2   H:3   H:2   H:2   H:1   H:3   H:2   H:2   H:1   H:2   H:1   H:1   T:4  
       T:1   T:1   T:2   T:1   T:2   T:2   T:3   T:1   T:2   T:2   T:3   T:2   T:3   T:3  

要快速获得表格,请结合DWin和joran的答案

> table(rowSums(coin.flip=="T"))

0 1 2 3 4 
1 4 6 4 1