我正在阅读别人发送的文件。这些文件的常规结构比较松散,但是不一致。我正在尝试获取文件名,使用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
答案 0 :(得分:1)
这是部分答案。我不知道拆分大写字母的好方法,但是可能有一种简单的正则表达式。
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