r +中的时间序列图帮助需要结合月份和年份列

时间:2018-03-01 18:19:25

标签: r plot time-series

我遇到将月份和年份列合并为日期格式的问题

n month year Score
35 01 2013 1.07
29 02 2013 3.09
31 03 2013 1.08
.....

我做了以下尝试,但只获得了一列NAs:

df$date <- as.Date(with(df, paste(df$year, df$month,sep="-")), "%Y-%m")

df$Date <- with(df, sprintf("%Y-%m", year, month))

df$Date <- as.yearmon(paste(df$year, df$month), "%Y %m")

我也在努力创建一个时间序列条形图,其中包含&#34;分数&#34;数据作为条和&#34; n&#34;数据在同一轴上绘制线图

N.B。

lapply(df, class)

显示

的输出
$n
[1] "integer"

$month
[1] "character"

$year
[1] "character"

$Score
[1] "numeric"

1 个答案:

答案 0 :(得分:0)

要使as.Date生成有效日期,您还需要提供一天。

测试数据

df = read.table(text = "n month year Score
35 01 2013 1.07
29 02 2013 3.09
31 03 2013 1.08", header = TRUE, sep = " ")
df$month = paste0("0", df$month)

<强>转换

df$date <- as.Date(paste(df$year, df$month, "01", sep="-"), "%Y-%m-%d")
>df$date
[1] "2013-01-01" "2013-02-01" "2013-03-01"

<强>剧情

您的分数和n值太大,无法在同一图表上以相同比例绘制:

library(ggplot2)
ggplot(data = df, aes(x = date, y = Score)) + 
  geom_col(fill = "gray60") + 
  geom_line(aes(y = n))

enter image description here

您可以对比例进行标准化,例如将y值除以得分和n个组分的最大值(可能用每个图表标记条形和点数及其实际值),或者将图表分开,或者取一些其他动作可以让你在它们如此不同时进行绘图我留给你决定。