从data.frame中提取列作为Vector

时间:2010-10-13 09:53:36

标签: r vector dataframe

我是R的新手。

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

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

我需要将其值存储为向量(x = c("IDEA","PFC","RPL","SOBHA"))。这是最简洁的方法吗?

2 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:0)

罗马·卢斯特里克(RomanLuš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)

最后,当您想从数据帧中提取矢量或对进行小标题时,请使用dplyr的{​​{1}}函数(并仅输入要提取的列名)。管道