0%

R中选择数据框的列

本文介绍利用tidyverse包的select()函数和sqldf包的sqldf()选择数据框的列。

1. tidyverse包select()

  1. 选择列

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #按位置选择
    > data <- mydata %>% select(1:3)
    > data <- mydata %>% select(1,3)

    #按名字选择
    > data <- mydata %>% select('col1','col2')
    > data <- mydata %>% select('col1','col3')

    #名字以col开头的列
    > data <- mydata %>% select(starts_with("col"))
    #名字以col结尾的列
    > data <- mydata %>% select(ends_with("col"))
    #名字包含有col的列
    > data <- mydata %>% select(contains("col"))
    #名字包含正则表达式的列
    > data <- mydata %>% select(matches(".t."))
    #选择字符向量中提供变量的所有列
    > data <- mydata %>% select(one_of(c("col1","col2")))

    #选择数值型的列
    > data <- mydata %>% select(is.numeric)
  2. 删除列

名称前加上减号-

1
2
3
4
5
6
7
8
9
10
11
12
13
#根据位置删除
> data <- mydata %>% select(-(1:3))

> data <- mydata %>% select(-1,-3)

> data <- mydata %>% select(-1)

#根据名字删除
> data <- mydata %>% select(-"col1",-"col2")

> data <- mydata %>% select(-("col1":"col2"))

> data <- mydata %>% select(-starts_with("col"))

2. sqldf包

  1. 选择列
    sqldf包可以在R中对dataframe格式使用sql语句,和mysql中的select语句是一致的。
    1
    2
    > data <- sqldf('select col1,col2 from mydata')
    > data <- sqldf('select col1,col2 from mydata where col1=="11"')