r - 从文件名中提取字符串并使用 mutate 创建新列

标签 r stringr dplyr

我有一个包含两列的数据框。第二列是文件名。

df  <- data.frame(paragraph = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
             filename = "./data/RevCon_2015_C1_Austria_05_06.txt", stringsAsFactors = FALSE)

如何从第二列中提取某些字符串(使用 stringr)并将它们添加(使用 dplyr::mutate)作为附加变量( session 、年份、国家/地区)等),这样我得到以下结果:

df2  <- data.frame(paragraph = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
              filename = "./data/RevCon_2015_C1_Austria_05_06.txt", conference = "RevCon", year = "2015", country= "Austria", date = "06.05.2015", stringsAsFactors = FALSE)

最佳答案

我们可以使用 tidyr::separate 执行以下操作:

library(tidyverse);
df %>%
    mutate(tmp = gsub("(\\./data/|\\.txt)", "", filename)) %>%
    separate(
        tmp,
        into = c("conference", "year", "ignored", "country", "month", "day")) %>%
    mutate(date = paste(day, month, year, sep = "/")) %>%
    select(-ignored, -month, -day)
#          paragraph                                filename conference year
#1 Lorem ipsum [...] ./data/RevCon_2015_C1_Austria_05_06.txt     RevCon 2015
#  country        date
#1 Austria  06/05/2015

请注意,这假设文件名遵循以下模式:./data/{conference}_{year}_{ignored}_{country}_{month}_{日}.txt


示例数据

df  <- data.frame(
    paragraph = "Lorem ipsum [...]",
    filename = "./data/RevCon_2015_C1_Austria_05_06.txt",
    stringsAsFactors = FALSE)

关于r - 从文件名中提取字符串并使用 mutate 创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005523/

相关文章:

r - 在 R 中识别派系

r - 字符串拆分成重复的行

r - 按 R 中的行选择最近的日期

r - 获取第二个大写字母之前的子字符串

r - 我能合理拆分这些数字串吗?

r - 通过使用涉及两列的两个单独的选择标准使用 dplyr 进行过滤

r - 使用 dplyr 从包含多个物种、处理和变量的数据框中计算百分比

r - 使用 ggplot2/ggfortify 更改 PCA 图中的载荷(箭头)长度?

r - 用数字和字母分割字符串

r - 使用 dplyr 在 r 中对一组内进行多次采样