name <- c("Jon", "Bill", "Maria")
agenn <- c(23, 41, 32)
agelk <- c(23, 41, 32)
agepm <- c(23, 41, 32)
df <- data.frame(name, age,agelk,agepm)
print (df)
I would like to drop columns with column names that contain c("epm","enn","jkk").
name <- c("Jon", "Bill", "Maria")
agenn <- c(23, 41, 32)
agelk <- c(23, 41, 32)
agepm <- c(23, 41, 32)
df <- data.frame(name, age,agelk,agepm)
print (df)
I would like to drop columns with column names that contain c("epm","enn","jkk").
Using data.table and %like%
df[,!colnames(df) %like% paste0(c("epm","enn","jkkk"),collapse="|")]
name agelk
1 Jon 23
2 Bill 41
3 Maria 32
Using matches
library(dplyr)
df %>%
select(-matches('epm|enn|jkk'))
# name agelk
#1 Jon 23
#2 Bill 41
#3 Maria 32
Here a base R approach:
First of all your code ;)
name <- c("Jon", "Bill", "Maria")
agenn <- c(23, 41, 32)
agelk <- c(23, 41, 32)
agepm <- c(23, 41, 32)
df <- data.frame(name, agenn,agelk,agepm)
Create your values do drop:
drop_val <- c("epm","enn","jkk")
You can check with grepl if a string exists in another. So let's loop for every string you want to remove and compare if it exists in colnames(df). Well and if none of your strings fits, you keep them -> otherwise remove.
df[!grepl(paste0(drop_val,collapse="|" ),names(df))]
Output:
name agelk 1 Jon 23 2 Bill 41 3 Maria 32