2016-02-04 115 views
1

我已经搜索了很多,但我仍然无法弄清楚这一点。我试图绘制一个数据帧中的一列与时间的关系,但是我的日期列在数据框中不是作为DATE列的索引(作为变量本身)被“硬编码”(缺少更好的单词)。R:使用“硬编码”日期列绘制data.frame与时间列

> head(tmp)[1] 

这是我收到的第一列是返回:

     RETURNS 
2010-01-13 00:00:00 0.8291384 
2010-01-14 00:00:00 0.2423567 
2010-01-15 00:00:00 -1.0882186 
2010-01-19 00:00:00 1.2422194 
2010-01-20 00:00:00 -1.0654438 
2010-01-21 00:00:00 -1.9126605 

如果我绘制它想:

plot(tmp$RETURNS) 

我得到对指数收益率的曲线从1到1500(数量)而不是时间。如果我有一个不同的时间专栏中,我会画出像这样,这将是罚款:

plot(tmp$DATE, tmp$RETURNS) 

不过,我不知道如何提取从“硬编码”日期栏的日期,如果是有道理的。我试图将它转换为其他对象,timeSeries,动物园等没有帮助。我相信有一种简单的功能,我只是无法找到它。感谢任何帮助人。

编辑: 谢谢你们,非常感谢你们的帮助。所有的答案都很好,太糟糕了,我无法接受他们;)当然是rownames我在找什么。

+0

'$ TMP日期时间< - as.POSIXct(rownames(TMP),TZ = “GMT”)' – Roland

+1

它不是硬编码,邮票是row.names。即tmp $ time <-row.names(tmp) – user3293236

回答

0

假定输入是如下面然后使用动物园我们可以绘制使用传统的图形,GGPLOT2和晶格如下的说明。我们还在最后展示了一个基本的R解决方案和一个变体。请注意,由于时间始终为0,因此我们在所有情况下都使用"Date"类作为时间索引。

library(zoo) 
z <- zoo(df$RETURNS, as.Date(rownames(df))) 

plot(z) 

library(ggplot2) 
autoplot(z) 

library(lattice) 
xyplot(z) 

# this one does not use any packages 
df2 <- data.frame(time = as.Date(rownames(df)), RETURNS = df$RETURNS) 
plot(RETURNS ~ time, df2) 

# this also works using df2 just calculated 
plot(df2) 

注:我们假设输入的是:

df <- data.frame(
    RETURNS = c(0.8291384, 0.2423567,-1.0882186, 1.2422194,-1.0654438,-1.9126605), 
    row.names = c("2010-01-13 00:00:00", "2010-01-14 00:00:00", "2010-01-15 00:00:00", 
    "2010-01-19 00:00:00","2010-01-20 00:00:00","2010-01-21 00:00:00")) 
1

再现您的数据(你应该已经使用dput,使我们的生活更轻松):

df <- as.data.frame(c(0.8291384, 0.2423567,-1.0882186, 1.2422194,-1.0654438,-1.9126605)) 
names(df) <- c("RETURNS") 
rownames(df) <- c("2010-01-13 00:00:00", "2010-01-14 00:00:00", "2010-01-15 00:00:00", "2010-01-19 00:00:00","2010-01-20 00:00:00","2010-01-21 00:00:00") 
df 

         RETURNS 
2010-01-13 00:00:00 0.8291384 
2010-01-14 00:00:00 0.2423567 
2010-01-15 00:00:00 -1.0882186 
2010-01-19 00:00:00 1.2422194 
2010-01-20 00:00:00 -1.0654438 
2010-01-21 00:00:00 -1.9126605 

清理:

df$Date <- as.Date(rownames(df)) 
rownames(df) <- NULL 
df 

    RETURNS  Date 
1 0.8291384 2010-01-13 
2 0.2423567 2010-01-14 
3 -1.0882186 2010-01-15 
4 1.2422194 2010-01-19 
5 -1.0654438 2010-01-20 
6 -1.9126605 2010-01-21 

绘图:

plot(df$Date, df$RETURNS) 

enter image description here

library(ggplot2) 
ggplot(df, aes(x=Date, y=RETURNS)) + geom_point() + scale_x_date() 

enter image description here

+0

谢谢Les,很好的回答。 – SpaceGr4vy