计算R中的频率

lig*_*ail 7 r frequency r-factor

这是我的数据

> a
 [1] Male   Male   Female Male   Male   Male   Female Female Male   Male   Female Male   Male   Male  
[15] Female Female Female Male   Female Male   Female Male   Male   Female Male   Male   Female Male  
[29] Male   Male   Female Male   Male   Male   Female Female Male   Male   Male   Male   Male  
Levels:  Female Male

> b
[1] 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1
Levels: 0 1

> table(a,b)
        b
a         0  1
          0  0
  Female 10  4
  Male   12 15
Run Code Online (Sandbox Code Playgroud)

我不知道为什么结果table(a,b)有一行(0 0),我的预期结果如下:

> table(a,b)
        b
a         0  1
  Female 10  4
  Male   12 15
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么会这样,以及如何纠正它,谢谢!

> dput(a)
structure(c(3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 3L, 
3L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 
3L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("", 
"Female", "Male"), class = "factor")

> dput(b)
structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 
2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("0", 
"1"), class = "factor")
Run Code Online (Sandbox Code Playgroud)

Ken*_*HBS 1

从上面的评论来看:

发生这种情况是因为 中存在空因子水平a

> levels(a)
[1] ""       "Female" "Male" 
Run Code Online (Sandbox Code Playgroud)

您可以继续生成一个忽略空因子水平的表(来自@lmo的评论):

table(as.character(a), b)
Run Code Online (Sandbox Code Playgroud)

或者,您可以轻松删除因子水平而无需观察(来自@Dave2e的评论)

a <- droplevels(a)
table(a, b)
Run Code Online (Sandbox Code Playgroud)