Я недавно задал вопрос, который был очень полезен, и я попытался использовать тот же подход, чтобы найти свое решение
df<- structure(list(How = structure(c(2L, 2L, 2L, 1L, 2L, 2L, 2L,
1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L), .Label = c("Ismainbody",
"IsmainbodyCandidate"), class = "factor"), No = c(12L, 38L, 38L,
3L, 49L, 38L, 85L, 4L, 38L, 57L, 38L, 5L, 6L, 10L, 4L, 12L, 38L,
7L, 8L, 61L), Main = structure(c(6L, 13L, 9L, 15L, 20L, 12L,
1L, 19L, 10L, 2L, 7L, 18L, 4L, 14L, 5L, 16L, 8L, 3L, 17L, 11L
), .Label = c("Daa_ASTRONOMY Iso 1B of Tn-1 TTT=ASTY ", "E7EUT5_ASTRONOMY gas TTT=ASTY BOO=3 ",
"ECO", "ECO transferase E [TTT=ASTY]", "ECO_ASTRONOMY karim, TTT=ASTY BOO=3",
"FSSZ1_ASTRONOMY Karim, tyBOO II brothers 74 TTT=ASTY BOO=3 ",
"H2A1A_ASTRONOMY tyBOO 1-A TTT=ASTY BOO=1 ", "H2A2B_ASTRONOMY tyBOO 2-B TTT=ASTY BOO=1 ",
"H2A3_ASTRONOMY Hammer H2A tyBOO 3 TTT=ASTY BOO=1 ", "H2AV_ASTRONOMY Iso 2 of TTT=ASTY ",
"H2E_ASTRONOMY ufidm TTT=ASTY ", "Hammer [TTT=ASTY]", "Hammer H2A tyBOO 2-C [TTT=ASTY]",
"Iso 2 of Deleted in house [TTT=ASTY]", "Iso 2019 of denis [TTT=ASTY]",
"K2C74_ASTRONOMY karim, tyBOO II TTT=ASTY BOO=1", "KAR_ASTRONOMY karim, tyBOO TTT=ASTY BOO=1 BBS",
"karim, tyBOO II 1b [TTT=ASTY]", "karim, tyBOO II 7 [TTT=ASTY]",
"Putative heat 7 [TTT=ASTY]"), class = "factor")), class = "data.frame", row.names = c(NA,
-20L))
Это данные, которые у меня есть, и я хочу удалить те строки, которые содержат следующие буквы:
Карим
ECO
Даа
Мне это понравилось
lookm <- c("karim", "ECO", "Daa")
df2<- df[!df$Main %in% lookm, ]
Но ничего не случилось Как я могу это сделать?
3 ответа
Мы могли бы использовать grep
df[!grepl(paste(lookm, collapse="|"), df$Main),]
Мы могли бы использовать функцию str_detect()
из пакета stringr
:
library(stringr)
df[!str_detect(df$Main, "karim|ECO|Daa"),]
Выход:
How No Main
1 IsmainbodyCandidate 12 FSSZ1_ASTRONOMY Karim, tyBOO II brothers 74 TTT=ASTY BOO=3
2 IsmainbodyCandidate 38 Hammer H2A tyBOO 2-C [TTT=ASTY]
3 IsmainbodyCandidate 38 H2A3_ASTRONOMY Hammer H2A tyBOO 3 TTT=ASTY BOO=1
4 Ismainbody 3 Iso 2019 of denis [TTT=ASTY]
5 IsmainbodyCandidate 49 Putative heat 7 [TTT=ASTY]
6 IsmainbodyCandidate 38 Hammer [TTT=ASTY]
9 IsmainbodyCandidate 38 H2AV_ASTRONOMY Iso 2 of TTT=ASTY
10 IsmainbodyCandidate 57 E7EUT5_ASTRONOMY gas TTT=ASTY BOO=3
11 IsmainbodyCandidate 38 H2A1A_ASTRONOMY tyBOO 1-A TTT=ASTY BOO=1
14 IsmainbodyCandidate 10 Iso 2 of Deleted in house [TTT=ASTY]
17 IsmainbodyCandidate 38 H2A2B_ASTRONOMY tyBOO 2-B TTT=ASTY BOO=1
20 IsmainbodyCandidate 61 H2E_ASTRONOMY ufidm TTT=ASTY
Если вы также хотите отождествить слово «Карим» с заглавной буквой «К», вы можете попробовать:
df[!str_detect(df$Main, "(K|k)arim|ECO|Daa"),]
Выход:
How No Main
2 IsmainbodyCandidate 38 Hammer H2A tyBOO 2-C [TTT=ASTY]
3 IsmainbodyCandidate 38 H2A3_ASTRONOMY Hammer H2A tyBOO 3 TTT=ASTY BOO=1
4 Ismainbody 3 Iso 2019 of denis [TTT=ASTY]
5 IsmainbodyCandidate 49 Putative heat 7 [TTT=ASTY]
6 IsmainbodyCandidate 38 Hammer [TTT=ASTY]
9 IsmainbodyCandidate 38 H2AV_ASTRONOMY Iso 2 of TTT=ASTY
10 IsmainbodyCandidate 57 E7EUT5_ASTRONOMY gas TTT=ASTY BOO=3
11 IsmainbodyCandidate 38 H2A1A_ASTRONOMY tyBOO 1-A TTT=ASTY BOO=1
14 IsmainbodyCandidate 10 Iso 2 of Deleted in house [TTT=ASTY]
17 IsmainbodyCandidate 38 H2A2B_ASTRONOMY tyBOO 2-B TTT=ASTY BOO=1
20 IsmainbodyCandidate 61 H2E_ASTRONOMY ufidm TTT=ASTY
Мы можем придумать подход, объединяющий функции dplyr's
slice()
и stringr's
str_which ():
library(dplyr)
library(stringr)
df %>%
slice(-str_which(df$Main, "karim|ECO|Daa"))
#OR
#df %>%
# slice(-str_which(df$Main, "(K|k)karim|ECO|Daa"))
Обратите внимание на вывод ниже, что мы потеряли прежние индексы строк нашего исходного data.frame:
How No Main
1 IsmainbodyCandidate 12 FSSZ1_ASTRONOMY Karim, tyBOO II brothers 74 TTT=ASTY BOO=3
2 IsmainbodyCandidate 38 Hammer H2A tyBOO 2-C [TTT=ASTY]
3 IsmainbodyCandidate 38 H2A3_ASTRONOMY Hammer H2A tyBOO 3 TTT=ASTY BOO=1
4 Ismainbody 3 Iso 2019 of denis [TTT=ASTY]
5 IsmainbodyCandidate 49 Putative heat 7 [TTT=ASTY]
6 IsmainbodyCandidate 38 Hammer [TTT=ASTY]
7 IsmainbodyCandidate 38 H2AV_ASTRONOMY Iso 2 of TTT=ASTY
8 IsmainbodyCandidate 57 E7EUT5_ASTRONOMY gas TTT=ASTY BOO=3
9 IsmainbodyCandidate 38 H2A1A_ASTRONOMY tyBOO 1-A TTT=ASTY BOO=1
10 IsmainbodyCandidate 10 Iso 2 of Deleted in house [TTT=ASTY]
11 IsmainbodyCandidate 38 H2A2B_ASTRONOMY tyBOO 2-B TTT=ASTY BOO=1
12 IsmainbodyCandidate 61 H2E_ASTRONOMY ufidm TTT=ASTY
Похожие вопросы
Новые вопросы
r
R - это свободный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальный и воспроизводимый пример (ы) вместе с желаемым результатом. Используйте `dput ()` для данных и укажите все неосновные пакеты с помощью вызовов library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов, связанных со статистикой, используйте https://stats.stackexchange.com.