【发布时间】:2021-08-13 23:05:59
【问题描述】:
我正在阅读具有多张工作表的 excel 文件。
file_to_read <- "./file_name.xlsx"
# Get all names of sheets in the file
sheet_names <- readxl::excel_sheets(file_to_read)
# Loop through sheets
L <- lapply(sheet_names, function(x) {
all_cells <-
tidyxl::xlsx_cells(file_to_read, sheets = x)
})
L 这里有所有的床单。现在,我需要从每张工作表中获取数据,以将所有列和行合并到一个文件中。准确的说,我想将数据中匹配的列和行汇总到一个文件中。
我会举个简单的例子来说明清楚。
例如,这张表在一张纸上,
df1 <- data.frame(x = 1:5, y = 2:6, z = 3:7)
rownames(df1) <- LETTERS[1:5]
df1
M x y z
A 1 2 3
B 2 3 4
C 3 4 5
D 4 5 6
E 5 6 7
下一张表中的第二个表格,
df2 <- data.frame(x = 1:5, y = 2:6, z = 3:7, w = 8:12)
rownames(df2) <- LETTERS[3:7]
df2
M x y z w
C 1 2 3 8
D 2 3 4 9
E 3 4 5 10
F 4 5 6 11
G 5 6 7 12
我的目标是从一个 excel 文件中组合(求和)所有 100 个表中的匹配记录,得到一个包含每个值总和的大表。
决赛桌应该是这样的:
M x y z w
A 1 2 3 0
B 2 3 4 0
C 4 6 8 8
D 6 8 10 9
E 8 10 12 10
F 4 5 6 11
G 5 6 7 12
有没有办法在 R 中实现这一点?我不是 R 方面的专家,但我希望我能知道如何阅读所有表格并进行求和,然后将输出保存到文件中。
谢谢
【问题讨论】:
-
请不要将数据发布为图片。看看如何创建一个great reproducible example 来显示数据。
-
@AnilGoyal 谢谢。它没有回答我的问题。我正在努力从多张表格中读取 100 张表格,然后汇总到一张表格中。
-
@MartinGal 我更新了问题并添加了更多可重现的代码。谢谢!
-
@AmalNasir,你给出的例子有行名。我将这些名称创建到“ID”列中。如果您收到未找到 id 列的错误,则仅表示您的实际数据没有行名。现在首先在您的 R 控制台/IDE 中尝试示例数据上的代码。如果它在示例上运行,则仅表示您的数据与您共享的数据不同。如果它仍然没有运行,那么问题可能在其他地方,例如未加载的包等。在这种情况下,您必须自己先找到问题所在。祝你好运。
-
根据已编辑的问题查看已编辑的答案。您的 toy_data 创建不正确,因为您首先创建行名,但再次编辑数据以删除行名。我还观察到,尽管您将问题更改了 5-6 次,但您没有对下面给出的任何答案进行投票。 Upvote 是对回答者的感谢,它有助于对好的内容/未来参考进行分类。
标签: r excel contingency