将通用标题名称应用于文件夹中的所有文件

时间:2018-10-25 05:29:07

标签: r

我在名为import_xxx.xlsx的文件夹中有4个文件。

我需要应用以下任务,

1。首先将通用标头名称应用于文件夹中的所有文件。

  1. 将应用的更正内容写为另一个文件夹中的单独文件。

我尝试了以下代码。

1。读取文件列表

filenames_list <- list.files(pattern= ".xls", full.names=TRUE) 

我的问题是如何搜索标题名称,并将更改后的名称应用于所有文件。

我的列名与示例数据如下。

  Sr No     Invoice Date    Invoice No    Payer Name    IGMNo    Container No    Size    Type    Act. gate in Date    Container Agent    Container  Agent  Name    Importer Name    CHA Code    CHA Name    Activity Description    Amount    Service Tax    Total                                                                  
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
  1    8-1-2018 12:12:29 AM    MII180800001    SAME DEUTZ FAHR INDIA PRIVATE LIMITED    2200750    ECMU9674562    40    GB    7-26-2018 4:50:35 AM    CLC007    CMA CGM    SAME DEUTZ FAHR INDIA PRIVATE LIMITED    CHS020    SEAKING CARGO SERVICES (I)  PVT LTD    Handling &  PNR Movement Charges-FCL    10400    1872    12272 
  2    8-1-2018 12:12:29 AM    MII180800001    SAME DEUTZ FAHR INDIA PRIVATE LIMITED    2200750    ECMU9674562    40    GB    7-26-2018 4:50:35 AM    CLC007    CMA CGM    SAME DEUTZ FAHR INDIA PRIVATE LIMITED    CHS020    SEAKING CARGO SERVICES (I)  PVT LTD    Value Added Charges    2000    360    2360                     
  1. 我需要执行以下数据转换任务,该任务将小写字符转换为大写字符。即活动描述列。

    data.frame(lapply(df $ Activity Description,function(v){ 如果(is.character(v))return(toupper(v)) 否则返回(v) }))

  2. 是否需要遍历文件才能编写?以下代码将写入文件,但我需要遍历并写入所有文件的应用更改。

    write.xlsx2(filename,"path") 
    

有人可以帮我遍历文件,执行标头转换并在循环中写入文件吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我将按照以下内容进行操作。您将必须使用新的公共标头common_header定义向量。
(未经测试。)

library(xlsx)

filenames_list <- list.files(pattern= "\\.xls", full.names=TRUE)

target_dir <- "path/to/target/directory/"

lapply(filenames_list, function(fl){
  DF <- read.xlsx2(fl)
  names(DF) <- common_header
  target_fl <- paste0(target_dir, basename(fl))
  write.xlsx2(DF, target_fl)
})