Фильтрация строк по суффиксам в указанном столбце c с использованием R - PullRequest
0 голосов
/ 29 января 2020

У меня большой фрейм данных, как показано ниже:

Din <- c ('test','test_p3_v1','test_p1_v2','test_p1','test_p3_v1','test','test_p2_v3','test_p1_v3','test_p2','test')
Elf <- c ('cat','tiger','mouse','dog','zebra','fish','snake','lion','bird','parrot')
data<- data.frame(Din,Elf)

, и я хочу отсканировать каждую строку в столбце 'Din', и если у любого из этих имен есть слово 'v' в суффиксах, затем просто оставьте те, у которых есть 'v1', не удаляя другие, у которых вообще нет суффиксов 'v'.

Я хочу, чтобы мой вывод был таким:

Din_new <- c ('test','test_p3_v1','test_p1','test_p3_v1','test','test_p2','test')
Elf_new <- c ('cat','tiger','dog','zebra','fish','bird','parrot')
data_new<- data.frame(Din_new,Elf_new)

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете использовать separate так:

library(tidyverse)

data %>%
  mutate(Din2 = Din) %>%
  separate(Din2, into = c ("Din2", "Version1","Version2")) %>%
  filter(Version2 == "v1" | is.na(Version2)) %>%
  select(Din,Elf)
0 голосов
/ 29 января 2020

Вы можете использовать grepl для логического включения или исключения любых подходящих строк. Таким образом, вы можете сказать «дайте мне строки, в которых нет« _v »ИЛИ с« _v1 »в них». как это

data_new <- data[!grepl("_v", Din) |  grepl("_v1", Din),]

data_new
#>           Din    Elf
#> 1        test    cat
#> 2  test_p3_v1  tiger
#> 4     test_p1    dog
#> 5  test_p3_v1  zebra
#> 6        test   fish
#> 9     test_p2   bird
#> 10       test parrot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...