Манипулирование фреймами данных с помощью ddply

У меня есть фрейм данных с именем output выходной фрейм данных

Я хочу сгенерировать режим (наиболее повторяющийся) code для каждого отдельного patientID и подсчитать уникальные patientID с указанным выше code для каждого отдельного zipcode.

Я пробовал это:

ddply(output,~zipcode,summarize,max=mode(code))

этот код будет генерировать режим code для каждого отдельного zipcode... но я хочу сгенерировать режим code для отдельного patientID в отдельном zipcode.

output=data.frame(code=c("E78.5","N08","E78.5","I65.29","Z68.29","D64.9"),patientID=c("34423","34423","34423","34423","34424","34425"),zipcode=c(00718,00718,00718,00718,00718,00719),city=c("NAGUABO","NAGUABO","NAGUABO","NAGUABO","NAGUABO","NAGUABO"))

my output=
zipcode most_rep_code patient_count
1     718         E78.5             1
2     719         D64.9             1

пожалуйста, включите воспроизводимый образец данных, а не снимок экрана.

nycrefugee 16.03.2019 21:03

@nycrefugee:пожалуйста, попробуйте это output=data.frame(code=c("E78.5","N08","E78.5","I65.29","Z68‌​.29","D64.9" ),patien‌​tID=c("34423","34423‌​","34423","34423","3‌​4424","34425"),zipco‌​de=c(00718,00718,007‌​18, 00718,00718,00719‌​),city=c("НАГУАБО","‌​НАГУАБО","НАГУАБО","‌​НАГУАБО","НАГУАБО","‌​НАГУАБО"))

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

Ответы 1

Если я правильно понял, что вам нужно найти code с наибольшей частотой по patientID и zipcode, то dplyr может пригодиться. Я думаю, вам нужно просто иметь 3 столбца выше в качестве группирующих переменных, а затем summarise, чтобы получить количество каждой группы. Самая высокая в каждой строке — мода. В новом столбце указано количество режимов.

# Your reprex data
output=data.frame(code=c("E78.5","N08","E78.5","I65.29","Z68.29","D64.9"),patientID=c("34423","34423","34423","34423","34424","34425"),zipcode=c(00718,00718,00718,00718,00718,00719),city=c("NAGUABO","NAGUABO","NAGUABO","NAGUABO","NAGUABO","NAGUABO")) 

library(dplyr)
output %>% 
  dplyr::group_by(patientID, code, zipcode) %>% 
  dplyr::summarise(mode_freq = n())

# A tibble: 5 x 4
# Groups:   patientID, code [5]
  patientID code   zipcode  freq
<fct>     <fct>    <dbl> <int>
1 34423     E78.5      718     2
2 34423     I65.29     718     1
3 34423     N08        718     1
4 34424     Z68.29     718     1
5 34425     D64.9      719     1

Я включил dplyr::, потому что предполагаю, что у вас загружен plyr, поэтому имена функций будут конфликтовать.

Обновлять:

Чтобы получить предлагаемый вами выход режима, по определению это должна быть самая высокая частота:

output %>% 
  group_by(patientID, code, zipcode) %>% 
  summarise(mode_freq = n()) %>%
  ungroup() %>% 
  group_by(zipcode) %>% 
  filter(mode_freq == max(mode_freq))

# A tibble: 2 x 4
# Groups:   zipcode [2]
  patientID code  zipcode mode_freq
<fct>     <fct>   <dbl>     <int>
1 34423     E78.5     718         2
2 34425     D64.9     719         1

я действительно ценю ваши усилия, но это не тот ответ, который я ищу, я отредактировал свой вопрос и включил раздел вывода, пожалуйста, просмотрите его, ожидая вашего ответа

Aswin K 16.03.2019 23:21

Я обновлю, но я думаю, что в вашем (новом) предложенном выводе количество пациентов в строке 1 должно быть 2.

nycrefugee 16.03.2019 23:28

Только № 1, потому что я ищу количество различных идентификаторов пациентов с кодом E78.5.

Aswin K 17.03.2019 00:02

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