用 1-10 来标记 10 年的数据,而不是 1955-1966

labeling 10 years of data by with 1-10 opposed to 1955-1966

我有 6 个数据集,每个数据集包含十年的每日数据,我想将它们绘制在同一张图表上。为此,我想将十年中的每一年转换为一个从 1 开始到 10 结束的数字。对于每个数据集,年份从 YYYY-10-01 开始,到 YYYY-09-30 结束,日期为YYYY-MM-DD 的格式。

我真的无处可去,但是玩过 seq() 函数。如果您有任何建议,请告诉我。

下面是我读取数据文件的代码。

WY10 <- fread("1956-1966.txt", select = c(3:4)) #reads the text file,selects col the 3 and 4
names(WY10)[names(WY10) == 'V4'] <- 'Discharge' #changes name of col 4 to Discharge
names(WY10)[names(WY10) == 'Date'] <- 'Year' #changes name of col 3 to Date
seq(as.Date("1955-10-01"), as.Date("1966-09-30","Years"))

p1 <- plot(WY10,type= "l",ylab='',xlab='')

我有 WY10-60 的每日数据。(1955-2016) R 非常新,但非常能够使用 google,但是,无法找到解决此问题的方法。提前致谢。

4018 个观测值中 6 个的示例数据。

{structure(list(Year = structure(-5206:-5201, class = c("IDate", 
"Date")), Discharge = c(19, 15, 17, 15, 17, 15)), row.names = c(NA, 
-6L), class = c("data.table", "data.frame")} 

我在@dww 的回答中取得了成功,但是在实际将更改应用到我的情节时遇到了困难。我的代码现在看起来像这样。

{x <- seq.Date(as.Date("1955-10-01"), as.Date("1966-09-30"), 1)
breaks <- seq(as.Date("1955-10-01"), length = 4018, by = "year")
cut(x, breaks, labels = FALSE )
plot(WY10, type = "l",ylab= 'Discharge (cfs)',xlab= 'Year', xlim=c(1,11)) 
axis(side = 1, at = 1:11)}

绘图函数似乎无法识别日期序列的变化。

这是一些示例数据

set.seed(1111)
x = seq.Date(as.Date("1955-10-01"), as.Date("1966-09-30"), 1)
x = sort(sample(x, 20))

现在,您可以使用剪切

breaks <- seq(as.Date("1955-10-01"), length=13, by="year")
cut(x, breaks, labels = FALSE )
# [1]  1  1  1  2  3  3  3  5  6  6  7  7  7  8  8  9 10 10 10 11

虽然我不能完全按照我想要的方式处理数据,但我最终找到了一个很好的解决方案。

首先,我读取了我的数据并将我的 y 变量设置为一个对象: 下面的代码读取我的 WY10 文本文件并将其转换为数据框。 我对所有 6 个十年的数据帧 WY10-WY60

都做了这个
WY10 <- fread("1956-1966.txt", header = TRUE, select = c(3:4))
names(WY10)[names(WY10) == 'V4'] <- 'Discharge'
Y1 <- WY10$Discharge

我做的作弊是只绘制 Y1 变量并使用 xaxt 从图中删除 x 变量: 下面的代码创建了 WY10 的初始图。

plot(Y1, xaxt= "n", type = "l",ylab= 'Discharge (cfs)') + 
(xlab= 'Year', col = "black", ylim=c(0,2500))

然后我为每个数据框写入了其余的 YX 变量:

lines(Y2, xaxt = "n", type = "l", col = "blue" )
lines(Y3, xaxt = "n", type = "l", col = "orange" )
lines(Y4, xaxt = "n", type = "l", col = "red" )
lines(Y5, xaxt = "n", type = "l", col = "green" )
lines(Y6, xaxt = "n", type = "l", col = "yellow" )

最后,我更改了绘图的 x 轴顺序:

axis(1, at=seq(0,4017,365), labels=0:11)

我认为这是一个快速简便的修复方法,但显然是一种变通方法,因为它实际上并没有对我的数据帧的 x 变量进行排序。