Фильтровать строки, в которых значение столбца заканчивается набором шаблонов - PullRequest
0 голосов
/ 30 августа 2018

У меня есть набор данных следующим образом

File_name     Folder
ord.cpp        1
rod.ibo        1
ppol.h         2
lko.cpp        3
rto.cp         3
tax.mo         2
t_po..lo.cpp   4

Мне нужно установить этот набор данных так, чтобы в наборе данных присутствовали только строки, в которых имя_файла оканчивается на «.cpp» или «.h»

Ответы [ 4 ]

0 голосов
/ 30 августа 2018

A dplyr и stringr решение:

df %>%
 filter(str_detect(File_name, ".cpp|.h"))

     File_name Folder
1      ord.cpp      1
2       ppol.h      2
3      lko.cpp      3
4 t_po..lo.cpp      4

Или только с dplyr:

df %>%
 filter(grepl(".cpp|.h", File_name))

     File_name Folder
1      ord.cpp      1
2       ppol.h      2
3      lko.cpp      3
4 t_po..lo.cpp      4
0 голосов
/ 30 августа 2018

Мы также можем использовать функцию file_ext из пакета tools, чтобы получить расширения файла и затем использовать его для подмножества фрейма данных.

library(tools)
df[file_ext(df$File_name) %in% c("cpp", "h"), ]

#     File_name Folder
#1      ord.cpp      1
#3       ppol.h      2
#4      lko.cpp      3
#7 t_po..lo.cpp      4
0 голосов
/ 30 августа 2018

Базовый раствор R:

# Looking for a string eding with .cpp or .h
df[endsWith(df$File_name,(".cpp"))|endsWith(df$File_name,(".h")),]

Выход:

     File_name Folder
1      ord.cpp      1
3       ppol.h      2
4      lko.cpp      3
7 t_po..lo.cpp      4
0 голосов
/ 30 августа 2018

Используйте grepl для базовой опции R:

df_subset <- df[grepl("\\.(?:cpp|h)$", df$File_name), ]
df_subset

     File_name Folder
1      ord.cpp      1
3       ppol.h      2
4      lko.cpp      3
7 t_po..lo.cpp      4

Демо

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