首页 > 解决方案 > 获取文件名并将其分配为函数中的列名

问题描述

我有几个csv文件都具有这种格式:

xyz         site
2.1         tex1
15.67       tex2
32.111      ny31

我想将这些文件导入 R。像这样:

df_list <- list.files('./usa_data') 
dfs <- lapply(df_list, import_function)

我想要import_function做的是获取 csv 文件名称的一部分并将其粘贴,而不是第一个列名 ( xyz)。我的 csv 名称具有以下格式:

usa_low_dollars_270_1.csv
usa_high_euros_250_2.csv
usa_low_gbp_240_1.csv

我想提取货币(名称的第三个组成部分),将它与“中位数”这个词结合起来,然后像这样重命名第一列:

dollars_median  site
2.1             tex1
15.67           tex2
32.111          ny31

# or 

euros_median  site
2.1             tex1
15.67           tex2
32.111          ny31

# etc

标签: r

解决方案


您可以lapply沿使用的索引df_list使用,seq_along而不是在向量本身上使用。

从那里,您可以df_list使用索引进行子集化,并使用strsplit.

df_list <- list.files()
df_list
[1] "usa_high_euros_250_2.csv"  "usa_low_dollars_270_1.csv" "usa_low_gbp_240_1.csv"   

lapply(seq_along(df_list), function(x){
  data <- read.csv(df_list[x])
  names(data)[1] <- str_c(strsplit(df_list[x],"_")[[1]][3],"_median")
  data
})
[[1]]
  euros_median site
1        2.100 tex1
2       15.670 tex2
3       32.111 ny31

[[2]]
  dollars_median site
1          2.100 tex1
2         15.670 tex2
3         32.111 ny31

[[3]]
  gbp_median site
1      2.100 tex1
2     15.670 tex2
3     32.111 ny31

推荐阅读