R dplyr group_by subject似乎使用整个数据框而不是主题

时间:2018-06-12 00:30:49

标签: r dplyr plyr

背景 我正在使用来自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 :(得分:0)

这是你想要的吗?在下面的示例中,输出按主题ID显示maxwght列的最大值。您可以将max()替换为mean,例如,如果您需要每个主题ID的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()