R dplyr group_by субъект, кажется, использует весь фрейм данных вместо субъекта - PullRequest
0 голосов
/ 12 июня 2018

Предпосылки Я работаю с большим набором данных из клинического испытания с повторными измерениями в R, где я хочу сделать некоторые манипуляции с данными для каждого субъекта.Это может быть извлечение максимального значения в столбце x для каждого субъекта или среднего значения столбца y для каждого субъекта.

Проблема

Мне нравится использовать пакет и каналы dplyr, что привело меня к функции group_by.Но когда я пытаюсь применить его, данные, которые я хочу извлечь, похоже, не группируются по темам, как это должно быть, а извлекают данные на основе всего набора данных.

Код

Это то, что я сделал до сих пор:

data <- read.csv(file="group_by_question.csv", header=TRUE, sep=",")

library(dplyr)
library(plyr)

data <- tbl_df(data)

test <- data %>%
  filter(!is.na(wght)) %>%
  dplyr::group_by(subject_id) %>%
  mutate(maxwght=max(wght),meanwght=mean(wght)) %>%
  ungroup()

Образец тестового фрейма данных:

test dataframe

Найдите .csv образец моего набора данных здесь: https://drive.google.com/file/d/1wGkSQyJXqSswThiNsqC26qaP7d3catyX/view?usp=sharing

1 Ответ

0 голосов
/ 12 июня 2018

Это то, что вы хотите?В моем примере ниже вывод показывает максимальное значение для столбца maxwght по идентификатору субъекта.Вы можете заменить max () на среднее, например, если вам требуется среднее значение для maxwght для каждого идентификатора субъекта.

library(dplyr)

data <- read.csv(file="group_by_question.csv", header=TRUE, sep=",")

test <- data %>%
    filter(!is.na(wght)) %>%
    mutate(maxwght=max(wght),meanwght=mean(wght)) %>%
    group_by(subject_id) %>%
    summarise(value = max(maxwght)) %>%
    ungroup()
...