[英]How to combine all data from multiple excel sheets per SubjectID in R (or excel)
我有一个包含多个数据表的 Excel 文件 (xlsx)。 所有表都包含对不同主题回答的不同问卷的答案。 每个主题都在每张表中的一行上(带有主题 ID),顶行具有特定问题的唯一名称 并非所有主题都回答了每个问卷,因此并非所有数据表都具有完全相同的行数,并且表不是按顺序排列的主题ID
我想创建 1 个文件,其中每个主题都有自己的行,并且该主题的所有答案都添加到该行。 如果主题没有回答特定问题(或根本没有出现在工作表中,则该列的值应保持为空。
我似乎找不到组合所有这些步骤的方法(在 Excel 的 R 中)
谁能帮我上路?
没有具体的例子很难回答,但以下可能有效:
library(readxl)
lapply(excel_sheets(path), read_excel, path = path) %>%
purrr::reduce(merge,by="subjectID")
path
是 Excel 文件的路径。
这将创建一个列表,其中每个工作表都作为一个 data.frame,并将其输入到“reduce”中,该列表按主题 ID 合并前两个数据帧,然后将结果与第三个数据帧合并,依此类推。
更多信息将有助于真正回答问题。
您可以使用 tidyverse 包在 R 中完成此操作:
install.packages("tidyverse")
library("tidyverse")
然后你需要导入你的 Excel 表格:
Sheet_A <- read_excel(File_Name, sheet = "Sheet_Name")
Sheet_B <- read_excel(File_Name, sheet = "Sheet_Name")
Sheet_Z <- read_excel(File_Name, sheet = "Sheet_Name")
然后,无论您的 ID 列叫什么,您都需要加入所有工作表:
Come_Together <- Sheet_A %>%
left_join(Sheet_B, by='ID_COLUMN') %>%
left_join(Sheet_C, by='ID_COLUMN')
然后,如果您愿意,您可以将它们写到一张工作表中的 Excel 文件中:
install.packages("xlsx")
library("xlsx")
write.xlsx(Come_Together, filepath, sheetName = "Sheet_Name")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.