【问题标题】:How to avoid empty factor levels in a plot?如何避免图中的空因子水平?
【发布时间】:2013-10-21 13:32:40
【问题描述】:

用户,

我有这个数据框:

A<- c(10,2,4,5,3,5,98,65,36,65,6,100,70,54,25,23,22,30,15,23)
B<- c(1,0.1,0.5,0.8,0.2,0.9,3,1.2,5.6,3.5,15.9,10.2,5,5.1,7.1,5,6,10,4,8)
C<- c("a","a","a","a","a","a","b","b","b","b","c","c","c","c","d","d","d","d","d","d")
mydf<- data.frame(A,B,C)

我做了一个只保留“a”级的子集。

subset<- subset(mydf, mydf$C=="a")

但是当我绘制图表时(请看图片),图表也会显示已删除的级别。

plot(B~ C, data=subset)

如何绘制子集数据框以避免删除级别?

谢谢!

【问题讨论】:

    标签: r plot subset


    【解决方案1】:
    str(subset)
    #'data.frame':   6 obs. of  3 variables:
    # $ A: num  10 2 4 5 3 5
    # $ B: num  1 0.1 0.5 0.8 0.2 0.9
    # $ C: Factor w/ 4 levels "a","b","c","d": 1 1 1 1 1 1
    

    通过factor去除缺失的因子水平:

    subset$C <- factor(subset$C)
    
    str(subset)
    #'data.frame':   6 obs. of  3 variables:
    #$ A: num  10 2 4 5 3 5
    #$ B: num  1 0.1 0.5 0.8 0.2 0.9
    #$ C: Factor w/ 1 level "a": 1 1 1 1 1 1
    

    【讨论】:

    • 这么简单!谢谢JT85
    【解决方案2】:

    使用droplevels:

    subset$C <- droplevels(subset$C)
    plot(B~ C, data=subset)
    

    顺便说一句,subset 不是一个好名字。

    【讨论】:

    • 我同意,我想更改子集名称,但答案比我的编辑更快。谢谢吉尔伯
    【解决方案3】:

    只要做:

    plot(B~ droplevels(C), data=subset)
    

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多