用 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 变量进行排序。
我有 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 变量进行排序。