我可以按时间顺序将日期排序为 R 中的字符吗?
Can I chronologically order dates as characters in R?
我有 .csv 格式的数据。第一列是日期,第二列是天数。我想绘制天数与日期。 (参见 here)
在我的 .csv 中,日期按年份顺序排列。在 RStudio 中,初始图按月份的时间顺序排列。
install.packages("tidyverse")
library(tidyverse)
#load my spreadsheet
openingData <- read_csv("daysPriorToOpening.csv")
ggplot(data = openingData) +
geom_col(mapping = aes(x = dateOpened, y = daysPrior) +
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")
这将创建 this 输出,其中 运行 按月数排列。我喜欢 appea运行ce,只是不喜欢顺序。有人建议我尝试使用 as.Date()
openingData$dateOpened <- as.Date(openingData$dateOpened, format = "%m/%d/%Y")
然后我 运行 再次将代码绘制成图表,它按时间顺序绘制,但现在有很大的差距。参见 here。日期没有像第一张图片中那样标记; reader 必须猜测确切的日期。
我对不同外观的猜测运行ce 是,在第一种情况下,日期是字符和离散的。在第二种情况下,使用 as.Date() 将它们更改为日期并且它们变得连续。有没有办法,
- 保持第一张图的显示,但按年份排序,或者
- 如第二张图所示显示,但要消除间隙或用相应的日期标记列?
您需要将日期转换为因子,并根据它们代表的日期对因子水平进行排序。这涉及转换为日期、排序,然后再次转换回来。
dates <- as.Date(openingData$dateOpened, format = "%m/%d/%y")
levs <- strftime(sort(dates), format = "%m/%d/%y")
openingData$dateOpened <- factor(strftime(dates, format = "%m/%d/%y"), levs)
ggplot(data = openingData) +
geom_col(mapping = aes(x = dateOpened, y = daysPrior)) +
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")
openingData %>%
mutate(dateOpened = as.Date(dateOpened,"%m/%d/%y")) %>%
arrange(dateOpened) %>%
mutate(id = factor(row_number(),labels = dateOpened)) %>%
ggplot() +
geom_col(mapping = aes(x = id, y = daysPrior))+
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")
我有 .csv 格式的数据。第一列是日期,第二列是天数。我想绘制天数与日期。 (参见 here)
在我的 .csv 中,日期按年份顺序排列。在 RStudio 中,初始图按月份的时间顺序排列。
install.packages("tidyverse")
library(tidyverse)
#load my spreadsheet
openingData <- read_csv("daysPriorToOpening.csv")
ggplot(data = openingData) +
geom_col(mapping = aes(x = dateOpened, y = daysPrior) +
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")
这将创建 this 输出,其中 运行 按月数排列。我喜欢 appea运行ce,只是不喜欢顺序。有人建议我尝试使用 as.Date()
openingData$dateOpened <- as.Date(openingData$dateOpened, format = "%m/%d/%Y")
然后我 运行 再次将代码绘制成图表,它按时间顺序绘制,但现在有很大的差距。参见 here。日期没有像第一张图片中那样标记; reader 必须猜测确切的日期。
我对不同外观的猜测运行ce 是,在第一种情况下,日期是字符和离散的。在第二种情况下,使用 as.Date() 将它们更改为日期并且它们变得连续。有没有办法,
- 保持第一张图的显示,但按年份排序,或者
- 如第二张图所示显示,但要消除间隙或用相应的日期标记列?
您需要将日期转换为因子,并根据它们代表的日期对因子水平进行排序。这涉及转换为日期、排序,然后再次转换回来。
dates <- as.Date(openingData$dateOpened, format = "%m/%d/%y")
levs <- strftime(sort(dates), format = "%m/%d/%y")
openingData$dateOpened <- factor(strftime(dates, format = "%m/%d/%y"), levs)
ggplot(data = openingData) +
geom_col(mapping = aes(x = dateOpened, y = daysPrior)) +
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")
openingData %>%
mutate(dateOpened = as.Date(dateOpened,"%m/%d/%y")) %>%
arrange(dateOpened) %>%
mutate(id = factor(row_number(),labels = dateOpened)) %>%
ggplot() +
geom_col(mapping = aes(x = id, y = daysPrior))+
labs(x = "Date Opened", y = "Days prior to opening at or above 11.0")