2012-03-20 28 views
4

我想在dataframe列中出现的次数之外创建一个馅饼图。然而,在我制作饼图之前,我想删除5个词。我有一个数据帧,我可以使用类似删除这些行:完全删除R中的dataframe行。stop table()返回0表示删除的数据

subset(df, tag != "rubbish") 

但是如果我然后绘制使用

pie(table(df$tag) 

垃圾仍出现在饼图,但与零分的情况。

子集之前table(df$tag)给了我这样的:

tag1 3 
tag2 7 
rubbish 9 

后:

tag1 3 
tag2 7 
rubbish 0 

反正有没有表彻底清除垃圾()返回零?我尝试过table(df$tag, exclude="rubbish"),但有多个标签要删除。

回答

5

我认为问题是df$tag是一个因素或分类变量。从因素中删除某个类别不会更改与该因素关联的级别。 table迭代与该因子相关的级别。即使级别为空table这样做,因此rubbish 0。解决方法是在删除标记后重新创建因子:

subset(df, tag != "rubbish") 
levels(df$tag) 
df$tag = factor(df$tag) 
levels(df$tag) 
table(df$tag) 

我认为这应该可以解决您的问题。

+0

完美!解决方案非常好,但是为解释问题而多谢。 – ds10 2012-03-20 11:24:57

+3

'小滴(子集(df,标签!=“垃圾”))'更容易... – 2012-03-20 13:36:01

+0

omg,感谢评论! – 2012-03-20 14:12:53