我正在阅读其他人发送的文件。这些文件的总体结构松散,但不一致。我正在尝试获取文件名,使用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"))
期望的结构,以tibble形式:
dat2 <- tribble(
~year, ~ site, ~crop, ~trt,
2017, "Ames", "Corn", "early",
2017, "Cobs", "Corn", NA,
2017, "Musc", "Corn", "lowN")
dat2
这是一个部分答案。我不知道以大写字母分割的好方法,但可能有一种简单的正则表达方式。
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