table返回频率为null的元素

时间:2016-12-20 15:25:13

标签: r dataframe

我想总结一下我的数据框(实际上是数据框中每个元素的频率)

我使用table函数来完成这项工作:

a<-table(EndResult$Masstab)
a

但它会返回一些Null频繁的元素!

                                                 .X20_TemperaturCPU 
                                                                0 
                              .Akt_Fuellprogramm.0..Rezept_Nummer 
                                                              534 
                   .Anwahl_Programm_Sorte.Programmnummer_Angef.0. 
                                                              510 
                     .Anwahl_Programm_Sorte.Sortennummer_Angef.0. 
                                                              180

如果没有这样的元素,那么实际上不应该显示这个元素。

如果我正在寻找这样一个元素:

EndResult[(EndResult$Masstab==".X20_TemperaturCPU"),]

它让我回复:

[1] Masstab Mf1MF2  MF1OF   MF2OF   MF1     MF2     OF     
<0 Zeilen> (oder row.names mit Länge 0)

为什么给我这个表函数一个频率为null的元素?

1 个答案:

答案 0 :(得分:1)

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