R table()的使用

table() 可以用来统计每个因子频数
例如:

> sample(LETTERS,size = 48, replace = T) -> a ##从26个大写字母中随机抽取48个
> # replace = T,意味着可放回抽样 
> a
 [1] "P" "E" "R" "F" "O" "D" "I" "R" "X" "N" "B" "U" "H" "E" "G" "G" "Q" "K" "N" "M" "K" "C" "N" "U" "G" "Z" "O" "Z" "B" "V" "V" "V" "J"
[34] "G" "Q" "K" "J" "E" "Z" "I" "I" "R" "G" "N" "M" "U" "N" "P"
> table(a)
a
B C D E F G H I J K M N O P Q R U V X Z 
2 1 1 3 1 5 1 3 2 3 2 5 2 2 2 3 3 3 1 3 

对于两个矩阵,向量等等都可以
例如:

> a <- letters[1:6]
> b <- LETTERS[1:6]
> table(a,b)
   b
a   A B C D E F
  a 1 0 0 0 0 0
  b 0 1 0 0 0 0
  c 0 0 1 0 0 0
  d 0 0 0 1 0 0
  e 0 0 0 0 1 0
  f 0 0 0 0 0 1
> a
[1] "a" "b" "c" "d" "e" "f"
> b
[1] "A" "B" "C" "D" "E" "F"
## 一个清晰的例子
> a <- rep("a",4)
> a
[1] "a" "a" "a" "a"
> b <- rep(c("a","b"),2)
> b
[1] "a" "b" "a" "b"
> table(a,b)
   b
a   a b
  a 2 2
>

接下来在介绍一些具体的参数
例如:

## exclude 不统计
> a <- sample(letters[1:10],size = 10,replace = T)
> a
 [1] "h" "d" "d" "d" "i" "e" "e" "j" "c" "f"
> table(a)
a
c d e f h i j 
1 3 2 1 1 1 1 
> table(a,exclude = "d") ## 不统计 "d"
a
c e f h i j 
1 2 1 1 1 1 
> ## useNA 分别可选三个参数 "no" "ifany" "always"
> ## no: 不统计NA
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> with(head(airquality),table(Ozone>30,Day,useNA = "no"))
       Day
        1 2 3 4 5 6
  FALSE 0 0 1 1 0 1
  TRUE  1 1 0 0 0 0
> ## ifany: 只统计行,不统计列
> with(head(airquality),table(Ozone>30,Day,useNA = "ifany"))
       Day
        1 2 3 4 5 6
  FALSE 0 0 1 1 0 1
  TRUE  1 1 0 0 0 0
  <NA>  0 0 0 0 1 0
> ## always:行列都统计
> with(head(airquality),table(Ozone>30,Day,useNA = "always"))
       Day
        1 2 3 4 5 6 <NA>
  FALSE 0 0 1 1 0 1    0
  TRUE  1 1 0 0 0 0    0
  <NA>  0 0 0 0 1 0    0
> a <- head(airquality)
> a$Day[1:3] <- NA
> a
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5  NA
2    36     118  8.0   72     5  NA
3    12     149 12.6   74     5  NA
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> with(a,table(Ozone>30,Day,useNA = "always"))
       Day
        4 5 6 <NA>
  FALSE 1 0 1    1
  TRUE  0 0 0    2
  <NA>  0 1 0    0
> 

结果维度的命名
例如

## 如果没有指定的dnn,则按照默认的list.names 去命名,行列命名控制如下
> with(a,table(Ozone>30,Day,useNA = "always",deparse.level = 0)) 
       
        1 2 3 4 5 6 <NA>
  FALSE 0 0 1 1 0 1    0
  TRUE  1 1 0 0 0 0    0
  <NA>  0 0 0 0 1 0    0
> with(a,table(Ozone>30,Day,useNA = "always",deparse.level = 1)) 
       Day
        1 2 3 4 5 6 <NA>
  FALSE 0 0 1 1 0 1    0
  TRUE  1 1 0 0 0 0    0
  <NA>  0 0 0 0 1 0    0
> with(a,table(Ozone>30,Day,useNA = "always",deparse.level = 2))
          Day
Ozone > 30 1 2 3 4 5 6 <NA>
     FALSE 0 0 1 1 0 1    0
     TRUE  1 1 0 0 0 0    0
     <NA>  0 0 0 0 1 0    0
> a
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> ## 也可用dnn指定
> with(a,table(Ozone>30,Day,useNA = "always",dnn = c("Oznon大于三十","天数"))) ## 顺序与输入数据的顺序相同
             天数
Oznon大于三十 1 2 3 4 5 6 <NA>
        FALSE 0 0 1 1 0 1    0
        TRUE  1 1 0 0 0 0    0
        <NA>  0 0 0 0 1 0    0
> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值