【问题标题】:Histogram for frequency of factor variables (EDIT: Now with sample data!)因子变量频率的直方图(编辑:现在有样本数据!)
【发布时间】:2017-07-17 03:49:26
【问题描述】:

这个问题与另一个标题相似的问题相似,但又不同。

我有一个包含因子变量的数据框。我想绘制一个直方图(最好在ggplot2 中),它在 x 轴上显示整数,以及在 y 轴上具有 x 观察值的因子的计数。所以我可以看到 x1 因子有 1 个观察值,x2 因子有 2 个观察值,等等。

我自己无法解开这个谜题。任何帮助将不胜感激。

编辑:我的问题与Make Frequency Histogram for Factor Variables 不同。

这个问题是:“我的数据框中每个因子水平有多少?”也就是说,有多少只狗、多少只猫、多少只鸟。

我在问,“有多少个因子水平有 x 行?”也就是说,有多少只动物有 2 行?如果我的数据框中有 3 只鸟和 3 条狗,我想要一个直方图,显示有 2 个因子水平有 3 个观察值。

EDIT2:嗯。我想我没有很好地解释自己。我从 Kaggle 比赛中下载了训练数据。数据是一组出租公寓列表。数据中的字段之一是 building_id。我已经分解了 building_id 字段。我想绘制:集合中有多少建筑物有 1 个列表?有多少建筑物在集合中有 2 个列表?等等。

例子:

listingid  buildingid bedrooms bathrooms etc...
001        001        1        1
002        001        2        1
003        001        1        1
004        001        2        1
005        002        1        1
006        002        2        1
007        002        1        1
008        003        2        2
009        003        1        1
010        004        2        2
011        004        3        1
012        005        1        1
013        006        2        2
014        007        2        1
015        008        1        1
016        009        1        1    

我想要显示的情节:

            5| X
 num        4| X
 bldgs.     3| X
            2| X   X
            1| X   X   X   X
             +--------------------------------
num listings:  1   2   3   4

情节显示一栋(001号楼)有4个房源,一栋(002号楼)有3个房源,两栋(003和004)有2个房源,5栋楼(005、006、007、008、 009) 有一个列表。

【问题讨论】:

  • 没有样本数据,您的问题不太可能得到好的答案,分享您的数据框的前几行,并分享您迄今为止尝试过的内容
  • 另外,如果您发现另一个标题相似的问题,请考虑链接到该问题。 :)
  • 请展示一个小例子以及预期的结果是什么(即您认为计算什么)。
  • 直方图用于连续数据。你想要一个条形图。

标签: r ggplot2


【解决方案1】:

要获得一个因子的水平数,我们可以使用length(levels(myfactor))。要对每个因素执行此操作,我们需要知道 data.frame 中的哪些变量是因素。我们用which(is.factor(myvariable)) 进行这样的检查。 将这两个命令向量化,然后绘制它们的条形图。

myfactors <- which(sapply(mydata,is.factor))
factorlengths <- sapply(myfactors,function(i) length(levels(mydata[[i]])))

barplot(factorlengths)

在 ggplot2 中,我会执行以下操作。

mydata2 <- data.frame(x = names(factorlengths), y = factorlengths)

ggplot(mydata2,aes(x = x, y = y)) + geom_bar(stat="identity")

这是你想要的吗?如果没有,请澄清您的问题with example data

纯语义,但您要绘制的是不是直方图

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多