在R中合并CSV文件:解决ZIP列类型不一致导致bind_rows失效问题
解决CSV合并时ZIP列类型不一致的问题
你可以在读取每个CSV文件后,统一将ZIP列转换为字符型,确保所有文件的该列类型一致后再合并。修改后的代码如下:
df <- list.files(path = "/Users/XXXX", pattern = "*.csv") %>% lapply(function(file_path) { # 读取单个CSV文件 read_csv(file_path) %>% # 将ZIP列转换为字符型 mutate(ZIP = as.character(ZIP)) }) %>% bind_rows()
如果存在部分文件没有ZIP列的情况,可以用更健壮的写法避免报错:
df <- list.files(path = "/Users/XXXX", pattern = "*.csv") %>% lapply(function(file_path) { read_csv(file_path) %>% # 仅对存在的ZIP列执行类型转换 mutate(across(any_of("ZIP"), as.character)) }) %>% bind_rows()
说明
- 借助
lapply的匿名函数,在读取每个文件后立即处理ZIP列的类型,确保所有文件的该列统一为字符型 across(any_of("ZIP"))会自动跳过不存在ZIP列的文件,避免运行时抛出错误
内容的提问来源于stack exchange,提问作者Jean-Paul Azzopardi
相关产品推荐
相关产品推荐

