我正在尝试将所有csv文件合并到一个文件夹中,并且某些摘录的版本略有不同。无论出于何种原因,似乎已经对列名进行了细微的更改。匹配和合并这些列中的数据的最佳方法是什么?
在检查了以下答案后,我尝试使用以下代码:How to import multiple .csv files at once?
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., col_types = cols(.default = "c")))
生成的tbl
的列比任何原始文件都多,罪魁祸首是在合并csvs之后,我在tbl
中具有如下名称的列:
我前面有很多这样的合并,并指出列名的差异并不总是以相同的形式表现出来(即有时问题是“ /”或其他字符)。
我是否可以期望必须手动进行这些更正,或者是否可以实现一些代码以匹配列?考虑到“电子邮件地址类型2”仅应与“电子邮件地址类型2”合并,而不能与“电子邮件地址2”等合并,我认为模糊匹配将很困难。>
是否可以更改代码以去除列标题中的所有空格或标点符号?,这将解决我的问题,因为唯一的问题似乎是字母和数字以外的其他字符
到目前为止,我尝试删除特殊字符的尝试在下面的代码中失败了。我的想法是尝试删除map_df
语句中列名字符串中的字符。
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., col_names = gsub("[^[:alnum:] ]", "", .),trim_ws=TRUE,
col_types = cols(.default = "c")))
下面再次尝试,我收到一条错误消息
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., {colnames<-c(gsub("[^[:alnum:] ]", "", x=names(.)))},
col_names = colnames,
col_types = cols(.default = "c")))
收到的错误消息说:
错误:$运算符对原子向量无效
在此先感谢您提供的任何帮助!