R的资料处理很常用的package“dplyr” 里面select()常被用来做资料的删减

select() 的用法

以mtcars资料集为例

1
2
3
4
5
head(mtcars,3)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

删减不需要的资料栏位
假设不需要用到 mpy,hp这两个栏位

1
2
3
4
5
6
mtcars1=select(mtcars,-c("mpg","hp"))
head(mtcars1,3)
# cyl disp drat wt qsec vs am gear carb
# Mazda RX4 6 160 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 6 160 3.90 2.875 17.02 0 1 4 4
# Datsun 710 4 108 3.85 2.320 18.61 1 1 4 1

假设需要mpg到wt的资料,但是不需要cyl和hp这两个栏位

1
2
3
4
5
6
mtcars2=select(mtcars,mpg:wt,-c("cyl","hp"))
head(mtcars2,3)
# mpg disp drat wt
# Mazda RX4 21.0 160 3.90 2.620
# Mazda RX4 Wag 21.0 160 3.90 2.875
# Datsun 710 22.8 108 3.85 2.320

select() 的子函数

select 还有很多非常好用的子函数

  • starts_with();
  • ends_with();
  • contains();
  • matches();
  • num_range();
  • one_of();
  • everything()

找出栏位中所有以“c”开头的columns

1
2
3
4
5
6
mtcars3 = select(mtcars,starts_with("c"))
head(mtcars3,3)
# cyl carb
# Mazda RX4 6 4
# Mazda RX4 Wag 6 4
# Datsun 710 4 1

删掉栏位名称中有“ar”的columns

1
2
3
4
5
6
7
mtcars4 = select(mtcars,-contains("ar"))
head(mtcars4,3)
# 原始 mpg cyl disp hp drat wt qsec vs am gear carb
# mpg cyl disp hp drat wt qsec vs am
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1

可以看出“ar”是一整个的字符串,所以字母顺序需要注意,有“ra”就被保留下来了

其他的几个子函数的用法也类似starts_with()