прохождение через фильтр во время слияния (конвейер?)

#r

#r

Вопрос:

Я пытаюсь объединить некоторые данные, и мне нужно пройти через некоторый фильтр во время процесса. У меня есть следующие коды, но он сохраняет всплывающее сообщение об ошибке. Кто-нибудь может быстро взглянуть и посмотреть, что не так? Я думаю, что написал это неправильно, и я не знаю, как это исправить.

Большое спасибо.

 Summary<-Reduce(function(x, y) merge(x, y, by="Subject", all = TRUE, sort = FALSE),
                   list(`Demographics Merged`[ , c("project","Subject","DMAGE","SEX","RACE","ETHNIC","FEMCBP")],
                        `Cancer History`[ , c("project","Subject","CHCTYP","CHCTYPSP")],
                        `DrugAdminIP` %>% filter(InstanceName %in% c("Day 1", "Day_1"))[ , c("Subject","EXYN","EXDT","EXDSLVL","EXDOSA")]))
 

ошибка исходит от `DrugAdminIP %>% filter(InstanceName %in% c("Day 1", "Day_1"))[ , c("Subject","EXYN","EXDT","EXDSLVL","EXDOSA")])) . Я хочу выполнить слияние "Subject","EXYN","EXDT","EXDSLVL","EXDOSA" из набора DrugAdminIP данных, и мне также необходимо отфильтровать данные с помощью InstanceName %in% c("Day 1", "Day_1")

Ответ №1:

Вы не можете добавить синтаксис базового [ подмножества к конвейерному filter вызову — порядок операций делает его неработоспособным. Вместо этого используйте весь базовый или весь dplyr синтаксис:

 # all base
Summary <- Reduce(
  function(x, y) merge(x, y, by="Subject", all = TRUE, sort = FALSE),
  list(
    `Demographics Merged`[ , c("project","Subject","DMAGE","SEX","RACE","ETHNIC","FEMCBP")],
    `Cancer History`[ , c("project","Subject","CHCTYP","CHCTYPSP")],
    `DrugAdminIP`[`DrugAdminIP`$InstanceName %in% c("Day 1", "Day_1"), c("Subject","EXYN","EXDT","EXDSLVL","EXDOSA")]
  )
)

# all dplyr (for the DrugAdminIP)
Summary <- Reduce(
  function(x, y) merge(x, y, by="Subject", all = TRUE, sort = FALSE),
  list(
    `Demographics Merged`[ , c("project","Subject","DMAGE","SEX","RACE","ETHNIC","FEMCBP")],
    `Cancer History`[ , c("project","Subject","CHCTYP","CHCTYPSP")],
    `DrugAdminIP` %>% 
       filter(InstanceName %in% c("Day 1", "Day_1")) %>%   
       select("Subject","EXYN","EXDT","EXDSLVL","EXDOSA")
  )
)