R语言中依据列名删除指定列

 

1、subset实现

复制代码
> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                          ## 测试数据框,共四列
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> subset(dat, select = -c)    ## 删除单列, c列
  a b d
1 1 5 A
2 2 6 B
3 3 7 C
4 4 8 D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> subset(dat, select = -c(b, d))    ## 同时删除多列,删除b、d列
  a c
1 1 a
2 2 b
3 3 c
4 4 d
复制代码

 

2、%in% in实现

复制代码
> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                            ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, !names(dat) %in% "b"]    ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[,!names(dat) %in% c("a", "c")]   ## 同时删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D
复制代码

 

 3、grep实现

复制代码
> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                                  ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, -grep("b", names(dat))]        ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[, -grep("a|c", names(dat))]     ## 删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D
复制代码

 

 4、grepl实现

复制代码
> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat                                       ## 测试数据框
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> dat[,!grepl("b", colnames(dat))]         ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat[,!grepl("b|d", colnames(dat))]       ## 删除多列b、d
  a c
1 1 a
2 2 b
3 3 c
4 4 d
复制代码

 

5、dplyr包实现

复制代码
> a <- 1:4
> b <- 5:8
> c <- letters[1:4]
> d <- LETTERS[1:4]
> dat <- data.frame(a, b, c, d)
> dat   
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> library(dplyr)
> select(dat, -b)               ## 删除单列b
  a c d
1 1 a A
2 2 b B
3 3 c C
4 4 d D
> dat
  a b c d
1 1 5 a A
2 2 6 b B
3 3 7 c C
4 4 8 d D
> select(dat, -c(a,c))         ## 删除多列a、c
  b d
1 5 A
2 6 B
3 7 C
4 8 D
复制代码

 

参考:

001:https://blog.csdn.net/weixin_46605479/article/details/119910368

002:https://blog.csdn.net/weixin_42683052/article/details/109999276

 

posted @   小鲨鱼2018  阅读(5667)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-05-07 R语言中sapply函数
2021-05-07 linux系统 awk命令统计每一个用户进程占用的内存
2021-05-07 linux系统awk命令拆分文件
2021-05-07 c语言 6-5
2021-05-07 c语言 6-4
2021-05-07 c语言 6-3
2021-05-07 c语言 6-2 输出三个数中的最小值
点击右上角即可分享
微信分享提示