问候,
我的表格如下所示:
date value
2007-11-05 134
2007-12-08 234
2008-03-10 322
2008-03-11 123
...
总之,它的每日价值为三年,但它没有每天的价值。我需要的是绘制整个时间跨度的折线图(数据$ date,data $ value),但考虑到这一天,表没有指定值,它应该假设最后一个已知。换句话说,该表仅在其更改的日期具有值。
那里的任何R专家可以帮助我吗? : - )
提前致谢!
答案 0 :(得分:1)
这样的东西?
require(zoo)
data = data.frame(date = as.Date(c('2007-11-05', '2007-12-08', '2008-03-10', '2008-03-11')), value = c(134, 234, 322, 123))
data = zoo(data$value, data$date)
days = seq(start(data), end(data), "day")
data2 = na.locf(merge(data, zoo(,days)))
plot(data2)
答案 1 :(得分:1)
data = data.frame(date = as.Date(c('2007-11-05', '2007-12-08', '2008-03-10',
'2008-03-11', '2008-01-15', '2008-01-15')),
value = c(134, 234, 322, 123, 175, 275))
ggplot(data, aes(x = date, y = value)) + geom_step()
如果当天的多个值相同,那么ggplot只会将它们视为一个。
答案 2 :(得分:0)
试试这个。我们使用tail(x,1)读取数据汇总以获取任何一天的最后一天,然后我们绘制它。 (read.zoo行保持示例自包含,但实际上将被替换为注释掉的行。)
Lines <- "date value
2007-11-05 132
2007-11-05 134
2007-12-08 231
2007-12-08 234
2008-03-10 322
2008-03-11 123"
library(zoo)
# z <- read.zoo("myfile.dat", header = TRUE, aggregate = function(x) tail(x, 1))
z <- read.zoo(textConnection(Lines), header = TRUE, aggregate = function(x) tail(x, 1))
plot(z)