Я пытаюсь отфильтровать по двум состояниям, но продолжаю удалять всех пациентов с любым из них

Я новичок в R, поэтому прошу прощения за ошибки и спасибо за помощь.

У меня есть набор данных (печень), где строки представляют собой идентификационные номера пациентов, а столбцы включают регион, в котором проживает пациент (Лондон, Йоркшир и т. д.), и в каком отделении пациент лечился (название больницы). Некоторые подразделения являются частными подразделениями. Я выявил 120 пациентов из Лондона, 100 из которых лечились в трех частных отделениях. Я хочу удалить 100 лондонских пациентов, лечившихся в частных отделениях, но я продолжаю случайно удалять всех пациентов, лечившихся в частных отделениях (около 900 пациентов). Буду признателен за совет, как просто убрать лондонских больных, лечившихся частным образом.

Я пробовал различные комбинации использования подмножества и фильтра с разными восклицательными знаками и скобками в разных местах, включая, например:

liver <- filter(liver, region_name != "London" & unit_name! = "Primrose Hospital" & unit_name != "Oak Hospital" & unit_name != "Wilson Hospital")

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

Попробуйте liverSubset <- liver[ liver$region_name != "London" & !liver$unit_name %in% c("Primrose Hospital", "Oak Hospital", "Wilson Hospital"), ]

zx8754 07.02.2023 15:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваше unit_name состояние обнуляет ваши результаты. Попробуйте использовать функцию match, которая чаще встречается в инфиксной форме %in%:

liver <- filter(liver,
                region_name != "London",
                ! unit_name %in% c("Primrose Hospital",
                                   "Oak Hospital",
                                   "Wilson Hospital"))

Также вы можете разделить логические условия И с помощью запятой.

Ответ принят как подходящий

Основываясь на отличном старте Парикшита (по-прежнему принимает пациентов частных больниц за пределами Лондона). Здесь нам нужно использовать оператор ИЛИ | в функции фильтра. Я сделал пример фрейма данных, который демонстрирует, как это работает для вашего случая. Таблица примеров содержит три ваши частные лондонские больницы и одну нечастную больницу, которую мы хотим сохранить. Кроме того, у него есть пациенты из Манчестера, которые посещают и Мэнч, и одну из частных больниц, и всех их мы хотим сохранить.

EDITED: теперь включает векторы символов, чтобы исключить обобщение комбинаций.

liver <- tibble(region_name = rep(c('London', 'Liverpool', 'Glasgow', 'Manchester'), each = 4),
                unit_name = c(rep(c('Primrose Hospital',
                              'Oak Hospital',
                              'Wilson Hospital',
                              'State Hospital'), times = 3), 
                              rep(c('Manch General', 'Primrose Hospital'), each = 2)))

liver

# A tibble: 16 x 2
   region_name unit_name        
   <chr>       <chr>            
 1 London      Primrose Hospital
 2 London      Oak Hospital     
 3 London      Wilson Hospital  
 4 London      State Hospital   
 5 Liverpool   Primrose Hospital
 6 Liverpool   Oak Hospital     
 7 Liverpool   Wilson Hospital  
 8 Liverpool   State Hospital   
 9 Glasgow     Primrose Hospital
10 Glasgow     Oak Hospital     
11 Glasgow     Wilson Hospital  
12 Glasgow     State Hospital   
13 Manchester  Manch General    
14 Manchester  Manch General    
15 Manchester  Primrose Hospital
16 Manchester  Primrose Hospital

excl.private.regions <- c('London', 
                          'Liverpool', 
                          'Glasgow')
excl.private.hospitals <- c('Primrose Hospital',
                            'Oak Hospital',
                            'Wilson Hospital')

liver %>% 
  filter(! region_name %in% excl.private.regions |
           ! unit_name %in% excl.private.hospitals)

# A tibble: 7 x 2
  region_name unit_name        
  <chr>       <chr>            
1 London      State Hospital   
2 Liverpool   State Hospital   
3 Glasgow     State Hospital   
4 Manchester  Manch General    
5 Manchester  Manch General    
6 Manchester  Primrose Hospital
7 Manchester  Primrose Hospital

Большое спасибо, это сработало! Извините, если это уже есть в вашем ответе, но если бы я хотел исключить, скажем, всех пациентов из Лондона, Ливерпуля и Глазго, которые обращались к частным поставщикам, но оставить всех государственных пациентов и всех пациентов Манчестера, будь то государственные или частные, как бы я изменил первую строку? кода? Спасибо!

s_greene 07.02.2023 19:57

Без проблем! Я обновил свой ответ, включив в него общие переменные, которые вы можете использовать в качестве списка исключенных регионов / больниц, поэтому, надеюсь, вы сможете применить это непосредственно к своей проблеме :)

Bowhaven 08.02.2023 12:58

Другие вопросы по теме