我正在使用rio
包将多个excel工作表导入一个数据框。
WIOD_EA_EmRelEnergy <- import_list("EA 2016/Emission-relevant Energy Accounts_total.xlsx",
setclass = "tbl", rbind = TRUE)
这行代码已经完成了我想要的工作,它在末尾添加了一个名为“file”的列,表示工作表的编号(第一个工作表的数据取值为1,依此类推)。
但是,我尝试在该列中使用工作表的名称而不是数字。工作表的名称是国家代码(“AUS”、“AUT”等)。因此,第一个工作表的数据不应取值1,而应取值“AUS”。
这应该只是一个小问题,但我根本找不到解决办法。
5条答案
按热度按时间wsxa1bj11#
只需在
dplyr
中使用bind_rows()
,并设置arg.id = "sheet"
,则每个工作表中的数据将被行绑定在一起,并添加一个新列,其名称与您在.id
中设置的名称相同,以记录数据来自的工作表名称。* 测试 *
写出一个excel文件,包含2张名为
AUS
和AUT
的工作表:然后
xxslljrj2#
您最好提供一些示例数据。
不过,这应该可以达到目的:
anauzrmj3#
没有使用
rio
-package的经验。我的工作流程通常是这样的:4ngedf3f4#
您可以使用
openxlsx::getSheetNames
将数字file
列标记为factor。kcugc4gi5#
我个人认为两者都是最好的,rio的import_list可以防止你在工作表上应用,并且利用了没有rbind = T的情况下,它将每个列表以工作表作为名称存储的优势。不知道为什么他们决定在rbind = T时从工作表名称交换到工作表索引,所以然后使用data.table中的rbindlist与use.names = T。