您如何访问此数据框左侧的日期列?
> data
GMT
Rate
2005-02-28 0.48326866256
2005-04-30 0.64922340405
2005-05-31 0.70036043096
2005-06-30 0.72051442515
.
.
.
如果我输入,
data[ , 1]
...它给了我费率栏。正如所料。
如果我使用,
data[ , 0]
......它不起作用。而且我得到了错误:下标超出范围'。
但如果我这样做,
data[1 , 0]
...我回来了第一次约会。 2005-02-28
这对我来说似乎有点矛盾,我无法提取数据[,0],因为我可以提取数据[,1]并且还可以提取数据[1,0]。
如何提取这些日期值?为什么数据[,0]不起作用?
谢谢,
答案 0 :(得分:3)
没有第0列。你可能会看到的是行名。您可以通过以下方式访问它们:
rownames(data) # for a matrix-like object
row.names(data) # for a data.frame
但两种方法都可以正常使用。
答案 1 :(得分:0)
首先一般说明,R没有0索引,因此永远不会有第0列。根据数据类型(使用str(数据)获得),您将通过rownames获取日期(数据) )(如果它确实是一个矩阵或data.frame),或通过索引(如果它是一个时间序列,似乎很可能)。
答案 2 :(得分:0)
没有第0列,它被称为rownames
,就像我们有列的名称一样,我们有行的名称。
显示iris
数据集
rownames(iris)
在您的情况下:rownames(data)
您可以创建另一个数据框df
,您可以将rownames
添加为第一列,然后添加整个数据集,如下所示iris
数据集。
df <- data.frame(cbind(First_col=rownames(iris), iris))
head(df)
# First_col Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 1 5.1 3.5 1.4 0.2 setosa
# 2 2 4.9 3.0 1.4 0.2 setosa
# 3 3 4.7 3.2 1.3 0.2 setosa
# 4 4 4.6 3.1 1.5 0.2 setosa
# 5 5 5.0 3.6 1.4 0.2 setosa
# 6 6 5.4 3.9 1.7 0.4 setosa
避免打印rownames
此处创建的df
print(head(df), row.names=F)
# First_col Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
您可以为数据集实现相同的功能。