如何在 R 中将数据从离散数据更改为连续数据?

问题描述 投票:0回答:1

我的“评论”数据集有两列导致我出现问题 - 一个“年”的年份格式类似于“2001/02”。另一个“小时”的格式为“01-02”。每当我尝试在图表中使用这些列时,我都会看到“错误:提供给连续刻度的离散值”。我该如何解决这个问题?对不起,如果答案很明显,我是一个初学者,在其他地方找不到答案。

这是我的“年”栏的代码:

ggplot(review_data, aes(x = YEAR, colour = CAUSE)) +
  geom_point() +
  geom_line() +
  labs(title = "Incidents",
       subtitle = "By year and cause",
       x = NULL,
       y = "Cause") +
  scale_colour_brewer(palette = "Dark2", 
                      labels = c(),
                      name = NULL) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

对于我的“约会”专栏:

ggplot(review_data) = mapping = aes(x = HOUR, fill = NUMBER) +
  geom_histogram(binwidth = 1, colour = "black") +
  scale_fill_brewer(palette = "Dark2", name = NULL) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  labs(title = "Number per hour")
r date time continuous discrete
1个回答
0
投票

问题可能是您的计算机无法将日期和小时识别为日期或小时,而是将它们解释为纯文本(字符)变量。当您深入研究 R 时,有必要了解一下它的对象类型和类。

简单来说,对象的类定义了允许用它做什么以及如何处理它。

您可以使用以下方法检查变量的类别:

class(review_data$YEAR)
.

如果我猜对了你的问题,它会说“性格”。这是一个用于文本的类,也是其他所有内容的后备类。文本本质上是离散的,因此 ggplot 不允许对其进行连续计算是非常好的行为。

解决方案是将您的变量转换为合适的类,告诉计算机它代表日期或时间信息,希望 ggplot 然后能够理解这些信息。

转换过程如下:

年/月变量:

要从“2001/02”格式转换为日期,请参阅此问题,其中详细介绍了各种可能性:Converting year and month ("yyyy-mm" format) to a date?

使用 lubridate 包的一个简单方法是:

review_data$year_month <- lubridate::ym(review_data$YEAR)

对于小时/分钟变量:

使用润滑包:

review_data$hour_minute <- lubridate::hm(review_data$HOUR)

我没有检查 ggplot 是否接受

hm
课程,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.