Есть ли рабочий процесс dplyr, чтобы взять нестандартные имена файлов и заставить их иметь структуру? - PullRequest
0 голосов
/ 19 февраля 2019

Я читаю в файлах, отправленных кем-то другим.Файлы имеют общую структуру, но они противоречивы.Я пытаюсь взять имена файлов, обработать их с помощью dplyr и создать новые имена файлов, которые соответствуют моему собственному навязанному стандарту.

Обрезкой всегда будет «Кукуруза», которую я пытался использовать в качестве своего якоря для решения, является ли имя файла в стиле фанк.Я пробовал использовать отдельные операторы gsub, grepl и ifelse, но все они неуклюжи и не совсем работают.Я новичок в dplyr (и stackoverflow), и мне нужно некоторое руководство.Спасибо за помощь!

Примеры имен файлов

dat <- tibble(filename = c("2017.Ames-Corn-early.out", 
                    "2017.Cobs-Corn.out",
                    "2017.MuscCorn_lowN.out"))

Первая попытка:

dat %>%
  # Separate, it is inconsistent, needs work 
  separate(filename, into = c("year", "site", "crop", "trt", "other"))

Желаемая структура в виде таблицы:

dat2 <- tribble(
  ~year, ~ site, ~crop, ~trt,
  2017,   "Ames", "Corn", "early",
  2017,   "Cobs", "Corn", NA,
  2017,   "Musc", "Corn", "lowN")
dat2

1 Ответ

0 голосов
/ 19 февраля 2019

Вот частичный ответ.Я не знаю хорошего способа разбить заглавные буквы, но, вероятно, есть простой способ регулярных выражений.

library(tidyverse)
dat2 <- dat %>%
  mutate(filename = str_remove(filename, "\\.out")) %>%
  separate(filename,  
           c("year", "site", "crop", "trt"), 
           sep = "[[:punct:]]")

> dat2
# A tibble: 3 x 4
  year  site     crop  trt  
  <chr> <chr>    <chr> <chr>
1 2017  Ames     Corn  early
2 2017  Cobs     Corn  NA   
3 2017  MuscCorn lowN  NA  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...