【问题标题】:Questions associated with "Error: Aesthetics must be either length 1 or the same as the data"与“错误:美学长度必须为 1 或与数据相同”相关的问题
【发布时间】:2017-07-10 00:09:39
【问题描述】:

我了解“错误:美学必须是长度 1 或与数据相同”的主题已经做了很多(在线阅读大量),但是我还有一些未解决的问题

我正在处理一个关于 2015 年打给西雅图警察局的所有电话的数据集。在将数据清理为可接受的格式后,我最终得到了一个包含 62,092 行和 13 列的数据集(数据集名称为 SPD_2015 )。我会将数据集的一部分添加到这个问题中,但我不完全确定如何以清晰易读的格式进行操作。

我使用包 lubridate 来提取与我的数据集相关的时间。然后我创建了一个条形图,显示犯罪发生的时间

ggplot(SPD_2015, aes(hour(date.reported.time))) +
  geom_bar(width = 0.7) 

而且效果很好。

由于汽车徘徊是最常报告的犯罪,我想绘制这些汽车徘徊发生的时间。这就是我遇到错误““错误:美学必须是长度 1 或与数据相同”的时候。

我读到 ggplot2 不喜欢在 ggplot 代码中进行子集化,因此我通过创建单独的数据框来对数据进行子集化。

car.prowl <- filter(SPD_2015, summarized.offense.description == "CAR PROWL")

所以这是我的问题。为什么当我查看我新创建的数据集“car.prowl”的维度时,我发现它的维度为 11,539 行和 13 列。但是当我检查发生时间列(犯罪发生的时间)中的小时长度时,我得到的长度是 62,092,这是原始数据集的长度吗?

在我看来,我认为以下代码会起作用:

ggplot(car.prowl, aes(hour(occured.time))) +
  geom_bar()

car.prowl$occured.time 的长度是正确的:

> length(car.prowl$occured.time)
[1] 11539

但是当我应用小时函数时,我得到了原始数据集的长度:

> length(hour(car.prowl$occured.time))
[1] 62092

什么时候应该是 11,539。

谢谢。请让我知道我能做些什么来使我的问题更清楚。

【问题讨论】:

  • 请提供一个可重现的例子,例如通过在数据样本上使用dput 并粘贴输出。例如样本25个条目:dput(SPD_2015[sample(1:nrow(SPD_2015), 25), ],选择合适的条目数来重现错误。
  • 您的代码只是 R 脚本,还是 Markdown 文档的一部分?如果是降价文档,则可能是缓存问题。

标签: r ggplot2 lubridate


【解决方案1】:

这可能是 Jeremy 上面所说的缓存问题。我不确定这是否可行,但您可以尝试以下方法,将它们链接在一起。

SPD_2015%>%
 filter(summarized.offense.description == "CAR PROWL")%>%
 ggplot(aes(hour(occured.time)))+
 geom_bar()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2017-11-04
    • 2022-08-20
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多