Questions associated with “Error: Aesthetics must be either length 1 or the same as the data”

一个人想着一个人 提交于 2019-12-12 05:59:18

问题


I understand the subject "Error: Aesthetics must be either length 1 or the same as the data" has been done a lot (plenty of reading available online), however, I still have some unresolved questions

I am working with a dataset regarding all calls made to the Seattle Police Department in 2015. After I am done cleaning the data into an acceptable format I wind up with a dataset that is 62,092 rows and 13 columns (dataset name is SPD_2015). I would add a portion of the dataset to this question but I'm not entirely sure how to do it in a clean and legible format.

I used package lubridate to extract the times associated with my data set. I then created a bar graph that showed what time the crimes occur

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

and that works perfectly.

Since Car Prowls were the most frequently reported crime, I wanted to graph what time these car prowls occurred. And this is when I come across the error ""Error: Aesthetics must be either length 1 or the same as the data".

I read that ggplot2 does not like it when you subset within the ggplot code, so I subsetted my data by creating a separate data frame.

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

So here is my question. Why is it that when I look at the dimensions of my newly created dataset "car.prowl" I see that it has a dimension of 11,539 rows and 13 columns. But when I examine the length of the hours in the occurred.time column (the time that the crime occurred) I get a length of 62,092 which is the length of the original dataset?

In my mind I am picturing that the following code would work:

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

The length of the car.prowl$occured.time is correct:

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

but when I apply the hour function I get the length of the original dataset:

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

when it should be 11,539.

Thank you. Please let me know what I can do to make my question more clear.


回答1:


It could be a caching issue as Jeremy said above. I'm not sure this would work, but you could try the below, chaining things together.

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


来源:https://stackoverflow.com/questions/45002213/questions-associated-with-error-aesthetics-must-be-either-length-1-or-the-same

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!