as.Date似乎无法与Excel日期一起使用

时间:2019-03-02 13:55:14

标签: r ggplot2

嗨,我有这个输入文件 http://www.mediafire.com/file/a4yda7zmwvpd9zi/data.xlsx/file

MIN和MAX列是xls文件中的Date类型,并且在as.Date之后的Class是Date时,类型也应该是它的两倍..但是当我运行以下代码时

library(ggplot2)
library(readxl)

out <- read_xlsx("C:/data.xlsx")

out

out$MIN <- as.Date(out$MIN)
out$MAX <- as.Date(out$MAX)
class(out$MIN)

#out$MIN <- as.Date(out$MIN, format = "%d/%m/%Y")

library(dplyr)

out %>% 
  group_by(SEX) %>% 
  tidyr::gather(key, value, -SEX) %>% 
  ggplot(aes(SEX, value)) + 
  geom_line(aes(color = SEX)) + 
  coord_flip() + 
  scale_y_date(breaks = c(out$MIN, out$MAX)) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
out

我不断收到错误date_trans works with objects of class Date only

我尝试了不同的格式..甚至将excel原始数据类型更改为不同的日期格式,但始终收到相同的错误。.

1 个答案:

答案 0 :(得分:0)

您可以尝试:

out %>% 
  tidyr::gather(key, value, -one_of(c("ID", "SEX"))) %>% 
  ggplot(aes(ID, value, group = ID)) + 
  geom_line(aes(color = SEX)) + 
  coord_flip() + 
  scale_y_date(breaks = seq(min(out$MIN), max(out$MAX), by = "year")) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

尽管我怀疑这种图表的用处,以及您如何解决日期的比例(我从最小到最大都按年序列),但这取决于您。