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