Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在与purrr和readxl结合之前,标准化excel工作表中的列名_R_Purrr_Readxl - Fatal编程技术网

在与purrr和readxl结合之前,标准化excel工作表中的列名

在与purrr和readxl结合之前,标准化excel工作表中的列名,r,purrr,readxl,R,Purrr,Readxl,我想编译一个Excel文件,其中包含多个标签,标签分别为2016年、2015年、2014年等。每个标签都有相同的数据,但列名的拼写可能因年份而异 我想在合并之前标准化每个表中的列 这是结合使用purrr和readxl执行此类任务的通用方法: combined.df <- excel_sheets(my.file) %>% set_names() %>% map_dfr(read_excel, path

我想编译一个Excel文件,其中包含多个标签,标签分别为2016年、2015年、2014年等。每个标签都有相同的数据,但列名的拼写可能因年份而异

我想在合并之前标准化每个表中的列

这是结合使用purrr和readxl执行此类任务的通用方法:

combined.df <- excel_sheets(my.file) %>% 
  set_names() %>%                                 
  map_dfr(read_excel, path = my.file, .id = "sheet") 

…但语法完全错误。

创建一个新函数是可行的,但冗长且使用两个映射:

  # User defined function: col_rename
  col_rename <- function(df){
    names(df) <- names(df) %>% 
     str_to_upper() %>% 
     make.names() %>% 
     str_trim()
   return(df)
  }

   combined.df <- excel_sheets(my.file) %>% 
    set_names() %>%
    map(read_excel, path = my.file) %>%  #<Import as list, not dfr
    map(col_rename) %>%                  #<Fix colnames (user defined function)
    bind_rows(.id = "sheet")

包中的clean_names函数可能会帮助您,而不是定义自己的函数。它接受一个dataframe/Tible作为输入,并返回一个带有干净名称的dataframe/Tible作为输出

下面是一个例子:

图书馆管理员 tibble列名称=1, 另一个col NAME=2, 还有一个名字=3%>% 清洁工:清洁你的名字 >一个tibble:1 x 3 >一个名字,另一个名字,还有另一个名字 > > 1 1 2 3 然后,您可以将其直接插入您提供的代码中:

合计0.df% 设置\u名称%>%
mapread\u excel,path=my.file%%>%%您可以提取第一张图纸的列名,然后通过read的col\u names参数为所有剩余图纸设置列名_excel@kath:每张图纸的列名可能拼写不同。此外,某些图纸可能包含其他字段。
  # User defined function: col_rename
  col_rename <- function(df){
    names(df) <- names(df) %>% 
     str_to_upper() %>% 
     make.names() %>% 
     str_trim()
   return(df)
  }

   combined.df <- excel_sheets(my.file) %>% 
    set_names() %>%
    map(read_excel, path = my.file) %>%  #<Import as list, not dfr
    map(col_rename) %>%                  #<Fix colnames (user defined function)
    bind_rows(.id = "sheet")