Как объединить все данные из нескольких листов Excel по SubIDID в R (или Excel) - PullRequest
0 голосов
/ 23 января 2020

У меня есть файл Excel (xlsx), который содержит несколько таблиц данных. Все сомы содержат ответы на разные вопросники, на которые отвечают разные предметы. Каждый субъект имеет свою строку на каждом листе (с SubjectID), а верхняя строка имеет уникальное имя заданного c вопроса. Не все субъекты ответили на каждый вопросник, поэтому не все таблицы данных имеют одинаковое количество строк, и листы не упорядочено по subjectID

Я хочу создать 1 файл, в котором у каждого предмета есть собственная строка, и все ответы по этому предмету добавляются в эту строку. Если субъект не ответил на конкретный c вопрос (или вообще не отображается на листе, его значение для этого столбца должно остаться пустым.

Кажется, я не могу найти способ объединить все эти шаги (либо в R of Excel)

Кто-нибудь, кто может помочь мне начать?

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Дополнительная информация будет полезна, чтобы действительно ответить на вопрос.

Вы, вероятно, можете выполнить sh это в R, используя пакет tidyverse:

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")

Затем вы необходимо объединить все листы в любом столбце идентификатора:

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")
0 голосов
/ 23 января 2020

Трудно ответить без конкретного c примера, но следующие могут работать:

library(readxl) 
lapply(excel_sheets(path), read_excel, path = path) %>%
purrr::reduce(merge,by="subjectID")

path - это путь к файлу Excel.

Это создает список с каждым листом как один data.frame внутри него и передает его в «Reduce», который объединяет первые два кадра данных по subjectID, а затем объединяет результат с третьим и так далее.

...