【问题标题】:Extract Column from data.frame as a Vector从 data.frame 中提取列作为向量
【发布时间】:2011-04-24 18:15:59
【问题描述】:

我是 R 新手。

我有一个 Data.frame,其中有一列名为“Symbol”。

   Symbol
1   "IDEA"
2   "PFC"
3   "RPL"
4   "SOBHA"

我需要将其值存储为向量 (x = c("IDEA","PFC","RPL","SOBHA"))。哪种方式最简洁?

【问题讨论】:

    标签: r vector dataframe


    【解决方案1】:
    your.data <- data.frame(Symbol = c("IDEA","PFC","RPL","SOBHA"))
    new.variable <- as.vector(your.data$Symbol) # this will create a character vector
    

    VitoshKa 建议使用以下代码。

    new.variable.v <- your.data$Symbol # this will retain the factor nature of the vector
    

    你想要什么取决于你需要什么。如果您使用此向量进行进一步分析或绘图,保留向量的因子性质是一个明智的解决方案。

    这两种方法有何不同:

    cat(new.variable.v)
    #1 2 3 4
    
    cat(new.variable)
    #IDEA PFC RPL SOBHA
    

    【讨论】:

    • 感谢 VitoshKa 的建议。
    • 如果列名存储在变量中怎么办?
    • 想通了 - 您可以通过以下方式使用变量访问列:your.data[,varName]
    • 这似乎对我不起作用; class(x) 和 typeof(x) 在调用 x
    • @MikePalmice 你能举个小例子吗?
    【解决方案2】:

    Roman Luštrik 提供了一个很好的答案,但是,$ 表示法通常很难在管道中使用。在管道中,使用dplyr 函数pull()

    # setting up
    library(tidyverse)
    # import tidyverse for dplyr, tibble, and pipe
       
    df <- data.frame(Symbol = c("IDEA","PFC","RPL","SOBHA"))
    > df
      Symbol
    1   IDEA
    2    PFC
    3    RPL
    4  SOBHA
    

    现在数据框已经设置好了,我们将首先对数据框进行一些随机变异,以表明它可以在管道中工作,最后我们将使用pull()

    myvector <- df %>%
      mutate(example_column_1 = 1:4, example_column_2 = example_column_1^2) %>% #random example function
      arrange(example_column_1) %>% #random example function
      pull(Symbol) # finally, the pull() function; make sure to give just the column name as an argument
    

    您甚至可以在 pull() 函数之后进一步操作管道中的向量。

    > myvector
    [1] IDEA  PFC   RPL   SOBHA
    Levels: IDEA PFC RPL SOBHA
    > typeof(myvector)
    [1] "integer"
    

    typeof(myvector) 返回整数,因为这就是 因子 的存储方式,因子的不同级别存储为整数(我认为至少它们是这样存储的)。如果要转换为字符向量,只需使用as.character(myvector)

    总之,当您想在管道中从数据框或小标题中提取向量时,请使用dplyrpull() 函数(并仅输入要提取的列名) em>。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2014-03-04
      相关资源
      最近更新 更多