R基于在您请求频率的变量中找到的所有因子水平向您提供输出。例如,考虑以下情况。
> table(c("A","A","C","D","E","D","D","E","C"))
A C D E
2 2 3 2
> fac_version <- factor(x = c(1,1,3,4,5,4,4,5,3),
+ levels = 1:5,
+ labels = LETTERS[1:5])
> table(fac_version)
fac_version
A B C D E
2 0 2 3 2
如您所见,通过声明一个因子,table命令将返回所有可能的因子级别,包括具有零值的因子级别。
您可能需要设置选项
stringsAsFactors
在程序开始时为FALSE。否则,R会将字符串强制转换为因子,我可以想象这会在以后引起这个问题(例如,如果您在运行频率表之前有一组字符串被过滤掉的行,那么您仍然会得到计数为零的返回行)。
另一种方法是创建表并过滤掉零值。这样地:
> table(fac_version)[table(fac_version) > 0]
fac_version
A C D E
2 2 3 2