我已经搜索了很多,但我仍然无法想象这一个。我试图在数据框中根据时间绘制一列,但是我的日期列是“硬编码”(缺少更好的单词)作为数据框中的索引而不是DATE列,作为变量本身。
> 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 我正在寻找的。 p>
答案 0 :(得分:1)
重现您的数据(您应该真的使用SELECT i.id_ingredient, l.id_language, il.trad
FROM Ingredient i
JOIN Language l ON 1=1
LEFT JOIN Ingredient_language il
ON il.id_ingredient = i.id_ingredient
AND il.id_language = l.id_language
让我们的生活更轻松):
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)
答案 1 :(得分: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"))