【问题标题】:How to extract single column as vector from data frame如何从数据框中提取单列作为向量
【发布时间】:2013-11-17 03:18:51
【问题描述】:

我有一个已保存为二进制压缩文件的文件,我记得使用以下命令

rates.data = readRDS(paste("~/Documents/.../..../RatesData/", 
"2013-01-14", ".rds", sep = ""))

这给了我:

rates.data
#            Date USSW1 USSW2 USSW3 USSW4 USSW5 USSW7 USSW10 USSW30
# 3271 2013-01-14  0.31  0.38  0.50  0.67  0.89  1.34   1.88   2.83

但是,我只想要价格。我尝试了以下方法:

rates.data[2:9]
# USSW1 USSW2 USSW3 USSW4 USSW5 USSW7 USSW10 USSW30
# 3271  0.31  0.38  0.50  0.67  0.89  1.34   1.88   2.83

rate.data[1,[2:9]] this does not work

这给了我一个元素...

rates.data[1,2]
[1] "0.31"

...或作为数字:

as.numeric(rates.data[1,2])
[1] 0.31

但是,我仍然无法获得矢量。如何提取向量?

str(rates.data) # returns the following - so its actually a data frame

'data.frame':   1 obs. of  9 variables:
$ Date  : chr "2013-01-14"
$ USSW1 : chr "0.31"
$ USSW2 : chr "0.38"
$ USSW3 : chr "0.50"
$ USSW4 : chr "0.67"
$ USSW5 : chr "0.89"
$ USSW7 : chr "1.34"
$ USSW10: chr "1.88"
$ USSW30: chr "2.83"

【问题讨论】:

  • 试试as.numeric(rates.data[1,2:9]),或者更好的as.numeric(rates.data[1,-1])
  • 当切片数据帧时,行索引在逗号之前,列索引在之后。如果您省略逗号,例如rates.data[2:9],您的列索引将被误解为行索引,而不是您想要的。至于rates.data[1,[2:9]],第二组括号是错误的语法,无论如何都是不必要的。 df[row-indices , col-indices] 就是你所需要的。

标签: r vector dataframe extract numeric


【解决方案1】:

rates.data[,2:9]

df[row-indices , col-indices]是你所需要的,如果你指定另一个你可以省略一个,所以这里我们只给出col-indices。

(如果省略逗号,例如rates.data[2:9],这仍然会被视为列索引,但它很草率。)

【讨论】:

    【解决方案2】:

    正如@nograpes 建议的那样。

    as.numeric(rates.data[, 2:9])
    ## [1] 0.31 0.38 0.50 0.67 0.89 1.34 1.88 2.83
    

    【讨论】:

    • 谢谢,一旦提供答案就很明显了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2018-04-08
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多