Частота в неделю - Набор данных диализа - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть набор данных диализа, запущенный с 1995 по 2014 год. В нем есть переменные "id", "name", "date" и "modality"

Меня интересует модальность "HD".

Структура данных соответствует этой структуре: - Начинается апрель 1995 г. (затем перечисляются месяцы до декабря 2014 г.) - Лица могут быть найдены за несколько месяцев (т. Е. Имя1 могло получить диализ с апреля 1995 г. по март 1997 г., поэтомуперечисляется несколько раз) - каждая строка с датой является сеансом (мне нужно определить частоту сеансов в неделю для каждого пациента).

Надеюсь, что вышеизложенное имеет смысл в том, что я пытаюсь сделать.

Вот пример набора данных:

id          name       date         modality    
10101650    name1      03-Apr-95    HD
10101650    name1      05-Apr-95    HD
10101650    name1      07-Apr-95    HD
10101650    name1      10-Apr-95    HD
10101650    name1      12-Apr-95    HD
10101650    name1      14-Apr-95    HD
10101650    name1      17-Apr-95    HD
10101650    name1      19-Apr-95    HD
10101650    name1      21-Apr-95    HD
10101650    name1      22-Apr-95    HD
10101650    name1      24-Apr-95    HD
10101650    name1      26-Apr-95    HD
10101650    name1      28-Apr-95    HD
10206042    name2      03-Apr-95    HD
10206042    name2      05-Apr-95    HD
10206042    name2      07-Apr-95    HD
10206042    name2      10-Apr-95    HD
10206042    name2      12-Apr-95    HD
10206042    name2      14-Apr-95    HD
10206042    name2      17-Apr-95    HD
10206042    name2      19-Apr-95    HD
10206042    name2      21-Apr-95    HD
10206042    name2      24-Apr-95    HD
10206042    name2      26-Apr-95    HD
10206042    name2      28-Apr-95    HD
10101650    name1      01-May-95    HD
10101650    name1      03-May-95    HD
10101650    name1      05-May-95    HD
10101650    name1      08-May-95    HD
10101650    name1      10-May-95    HD
10101650    name1      12-May-95    HD
10101650    name1      15-May-95    HD
10101650    name1      17-May-95    HD
10101650    name1      19-May-95    HD
10101650    name1      22-May-95    HD
10101650    name1      24-May-95    HD
10101650    name1      26-May-95    HD
10101650    name1      29-May-95    HD
10101650    name1      31-May-95    HD
10205987    name3      01-May-95    HD
10205987    name3      03-May-95    HD
10205987    name3      05-May-95    HD
10205987    name3      08-May-95    HD
10205987    name3      10-May-95    HD
10205987    name3      12-May-95    HD
10205987    name3      15-May-95    HD
10205987    name3      17-May-95    HD
10205987    name3      19-May-95    HD
10205987    name3      22-May-95    HD
10205987    name3      24-May-95    HD
10205987    name3      26-May-95    HD
10205987    name3      29-May-95    HD
10205987    name3      31-May-95    HD
10206042    name2      01-May-95    HD
10206042    name2      03-May-95    HD
10206042    name2      05-May-95    HD
10206042    name2      08-May-95    HD
10206042    name2      10-May-95    HD
10206042    name2      12-May-95    HD
10206042    name2      15-May-95    HD
10206042    name2      17-May-95    HD
10206042    name2      19-May-95    HD
10206042    name2      22-May-95    HD
10206042    name2      24-May-95    HD
10206042    name2      26-May-95    HD

Как уже упоминалось, мне нужно количество сеансов в неделю на пациента.Это будет в среднем, поскольку пациенты могут находиться на диализе в течение нескольких лет.

1 Ответ

0 голосов
/ 27 сентября 2018

Вот как вы можете сделать это с пакетами dplyr и lubridate -

library(dplyr)
library(lubridate)

df$week_year <- paste(week(df$date), year(df$date), sep = "-")
filter(df, modality == "HD") %>%
group_by(id, name, week_year) %>%
  summarise(sessions = n()) %>%
  group_by(id, name) %>%
  summarize(avg_sessions_per_week = mean(sessions))

# A tibble: 3 x 3
# Groups:   id [?]
#         id name  avg_sessions_per_week
#      <int> <chr>                 <dbl>
# 1 10101650 name1                  3.00
# 2 10205987 name3                  2.80
# 3 10206042 name2                  3.00

Данные -

df <- structure(list(id = c(10101650L, 10101650L, 10101650L, 10101650L, 
10101650L, 10101650L, 10101650L, 10101650L, 10101650L, 10101650L, 
10101650L, 10101650L, 10101650L, 10206042L, 10206042L, 10206042L, 
10206042L, 10206042L, 10206042L, 10206042L, 10206042L, 10206042L, 
10206042L, 10206042L, 10206042L, 10101650L, 10101650L, 10101650L, 
10101650L, 10101650L, 10101650L, 10101650L, 10101650L, 10101650L, 
10101650L, 10101650L, 10101650L, 10101650L, 10101650L, 10205987L, 
10205987L, 10205987L, 10205987L, 10205987L, 10205987L, 10205987L, 
10205987L, 10205987L, 10205987L, 10205987L, 10205987L, 10205987L, 
10205987L, 10206042L, 10206042L, 10206042L, 10206042L, 10206042L, 
10206042L, 10206042L, 10206042L, 10206042L, 10206042L, 10206042L, 
10206042L), name = c("name1", "name1", "name1", "name1", "name1", 
"name1", "name1", "name1", "name1", "name1", "name1", "name1", 
"name1", "name2", "name2", "name2", "name2", "name2", "name2", 
"name2", "name2", "name2", "name2", "name2", "name2", "name1", 
"name1", "name1", "name1", "name1", "name1", "name1", "name1", 
"name1", "name1", "name1", "name1", "name1", "name1", "name3", 
"name3", "name3", "name3", "name3", "name3", "name3", "name3", 
"name3", "name3", "name3", "name3", "name3", "name3", "name2", 
"name2", "name2", "name2", "name2", "name2", "name2", "name2", 
"name2", "name2", "name2", "name2"), date = structure(c(9223, 
9225, 9227, 9230, 9232, 9234, 9237, 9239, 9241, 9242, 9244, 9246, 
9248, 9223, 9225, 9227, 9230, 9232, 9234, 9237, 9239, 9241, 9244, 
9246, 9248, 9251, 9253, 9255, 9258, 9260, 9262, 9265, 9267, 9269, 
9272, 9274, 9276, 9279, 9281, 9251, 9253, 9255, 9258, 9260, 9262, 
9265, 9267, 9269, 9272, 9274, 9276, 9279, 9281, 9251, 9253, 9255, 
9258, 9260, 9262, 9265, 9267, 9269, 9272, 9274, 9276), class = "Date"), 
    modality = c("HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", "HD", 
    "HD", "HD", "HD", "HD", "HD", "HD", "HD")), .Names = c("id", 
"name", "date", "modality"), row.names = c(NA, -65L), class = "data.frame")
...