У меня есть список поврежденных путей к файлам, где в некоторых случаях последний каталог сливался с именем файла (например, вместо DIR/analysis/filename.csv
это DIR/analysisfilename.csv
). Я создал разделение DF на /
, и мне нужно поместить экстракт analysis
из имени файла и поместить его в первый предыдущий столбец со значением NA
.
Есть ли способ сделать это в R?
Вот небольшой пример с моим текущим входом и желаемым выходом
library(tidyverse)
dat <- structure(list(a = c("MOX", "MOX", "MOX", "MOX", "MOX",
"MOX", "MOX", "MOX", "MOX", "MOX"),
b = c("FFTF", "FFTF", "FFTF", "FFTF", "JOYO",
"JOYO", "JOYO", "JOYO", "JOYO", "JOYO"),
c = c("FO-2", "FO-2", "FO-2", "FO-2", "MK-I",
"MK-I", "MK-I", "B14", "B14", "B14"),
d = c("L09", "L09", "L09", "L09", NA, NA, NA,
"PTM001", "PTM001", "PTM001"),
e = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_,
NA_character_),
f = c("analysisL09_1D_sampleJ", "analysisL09_1D_sampleH",
"analysisL09_Multi-App_2DRZ", "analysisL09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth",
"analysisMK-I_50MW_new_bubble_gb_lim", "analysisMK-I_75MW_new_bubble_gb_lim",
"analysisMK-I_50MW_old_bubble_gb_lim", "analysisB14_PTM001_1D_sample3_noAm",
"analysisB14_PTM001_1D_sample1", "analysisB14_PTM001_1D_sample2")),
row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
Токовый выход
dat
#> # A tibble: 10 x 6
#> a b c d e f
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 MOX FFTF FO-2 L09 <NA> analysisL09_1D_sampleJ
#> 2 MOX FFTF FO-2 L09 <NA> analysisL09_1D_sampleH
#> 3 MOX FFTF FO-2 L09 <NA> analysisL09_Multi-App_2DRZ
#> 4 MOX FFTF FO-2 L09 <NA> analysisL09_2DRZ_new_bubble_gb_lim_DiffCoeff4…
#> 5 MOX JOYO MK-I <NA> <NA> analysisMK-I_50MW_new_bubble_gb_lim
#> 6 MOX JOYO MK-I <NA> <NA> analysisMK-I_75MW_new_bubble_gb_lim
#> 7 MOX JOYO MK-I <NA> <NA> analysisMK-I_50MW_old_bubble_gb_lim
#> 8 MOX JOYO B14 PTM001 <NA> analysisB14_PTM001_1D_sample3_noAm
#> 9 MOX JOYO B14 PTM001 <NA> analysisB14_PTM001_1D_sample1
#> 10 MOX JOYO B14 PTM001 <NA> analysisB14_PTM001_1D_sample2
dat2 <- structure(list(a = c("MOX", "MOX", "MOX", "MOX", "MOX",
"MOX", "MOX", "MOX", "MOX", "MOX"),
b = c("FFTF", "FFTF", "FFTF", "FFTF", "JOYO",
"JOYO", "JOYO", "JOYO", "JOYO", "JOYO"),
c = c("FO-2", "FO-2", "FO-2", "FO-2", "MK-I",
"MK-I", "MK-I", "B14", "B14", "B14"),
d = c("L09", "L09", "L09", "L09", "analysis", "analysis", "analysis",
"PTM001", "PTM001", "PTM001"),
e = c("analysis", "analysis", "analysis",
"analysis", NA_character_, NA_character_,
NA_character_, "analysis", "analysis",
"analysis"),
f = c("L09_1D_sampleJ", "L09_1D_sampleH",
"L09_Multi-App_2DRZ", "L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth",
"MK-I_50MW_new_bubble_gb_lim", "MK-I_75MW_new_bubble_gb_lim",
"MK-I_50MW_old_bubble_gb_lim", "B14_PTM001_1D_sample3_noAm",
"B14_PTM001_1D_sample1", "B14_PTM001_1D_sample2")),
row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
Требуемый выход
dat2
#> # A tibble: 10 x 6
#> a b c d e f
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 MOX FFTF FO-2 L09 analysis L09_1D_sampleJ
#> 2 MOX FFTF FO-2 L09 analysis L09_1D_sampleH
#> 3 MOX FFTF FO-2 L09 analysis L09_Multi-App_2DRZ
#> 4 MOX FFTF FO-2 L09 analysis L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_Gr…
#> 5 MOX JOYO MK-I analysis <NA> MK-I_50MW_new_bubble_gb_lim
#> 6 MOX JOYO MK-I analysis <NA> MK-I_75MW_new_bubble_gb_lim
#> 7 MOX JOYO MK-I analysis <NA> MK-I_50MW_old_bubble_gb_lim
#> 8 MOX JOYO B14 PTM001 analysis B14_PTM001_1D_sample3_noAm
#> 9 MOX JOYO B14 PTM001 analysis B14_PTM001_1D_sample1
#> 10 MOX JOYO B14 PTM001 analysis B14_PTM001_1D_sample2
Создано в 2020-03-05 пакетом prepx (v0.3.0)