在R中有没有办法读取多个excel文件,将列改为字符,然后合并它们?

yjghlzjz  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(174)

我觉得这有一个简单的解决方案,但我想不出来。
我有59个excel文件要合并。但是,其中4列混合了日期和NA(取决于研究动物是否是迁徙动物),所以R不允许我将它们合并,因为有些是数字,有些是字符。我希望将所有Excel文件读入R,将每个文件中的4列转换为as.character,然后把它们合并起来我想一个循环就可以做到。
我在网上找到的任何东西都需要我为每个读取的文件键入名称,我真的不想为59个文件这样做。一旦我把它们读入R并转换了那些列,我可以很容易地从R中合并它们吗?如果这很简单,我很抱歉,但我不知道该怎么做才能让这更容易。

bbuxkriu

bbuxkriu1#

你可以使用lapply快速地完成这个任务。你并不清楚你到底想要如何合并文件(通过一个公共变量进行真正的合并,或者追加行,或者追加列)。无论哪种方式,我认为你都不需要为as.character做任何改变,下面的任何方法(2A - 2C)都可以工作:

library(readxl)

# 1. Read in all excel files in a folder given a specific filepath
filepath <- "your/file/path/"
file_list <- list.files(path = filepath, pattern='*.xlsx')
df_list <- lapply(file_list, read_excel)

# 2a. Merge data (assuming a unique identifier, i.e "studyid")
final_data <- Reduce(function(...) merge(..., by = "studyid", all = TRUE), df_list)

# 2b. If all files have the same columns, append to one long dataset
final_data <- do.call(rbind, df_list)

# 2c. If you want to make a wide dataset (append all columns)
final_data <- do.call(cbind, df_list)

相关问题