我想总结一下我的数据框(实际上是数据框中每个元素的频率)
我使用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的元素?
答案 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