代码之家  ›  专栏  ›  技术社区  ›  Nowak

r dpylr group_by subject似乎使用整个数据帧而不是subject

  •  0
  • Nowak  · 技术社区  · 6 年前

    背景 我正在研究一个来自R的重复测量临床试验的大数据集,在这里我想为每个受试者做一些数据操作。这可以是提取每个主题的x列中的最大值,也可以是每个主题的y列的平均值。

    问题

    我喜欢使用dplyr包和管道,这使我进入了按功能分组的小组。但是,当我尝试应用它时,我想要提取的数据似乎并不像预期的那样按主题分组,而是基于整个数据集提取数据。

    代码

    这就是我迄今为止所做的:

    data<-read.csv(file=“group_by_question.csv”,header=true,sep=“,”)
    
    库(dplyr)
    图书馆(PLYR)
    
    数据<-tbl_df(数据)
    
    测试<-数据%gt;%
    过滤器(!是.na(wght)%>%
    dplyr::分组依据(主题ID)%>%
    突变(max wght=max(wght),meanwght=mean(wght))%>%
    取消分组()
    

    测试数据帧示例:

    在此处查找我的数据集的.csv示例: https://drive.google.com/file/d/1wgksqyjxqsswthinsqc26qap7d3catyx/view?usp=分享每一个受试者的配种。这可以是提取每个主题的x列中的最大值,也可以是每个主题的y列的平均值。

    问题

    我喜欢使用dplyr包和管道,这使我进入了按功能分组的小组。但是当我尝试应用它时,我想要提取的数据似乎不像它应该那样按主题分组,而是基于整个数据集提取数据。

    代码

    这就是我迄今为止所做的:

    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 回复  |  直到 6 年前
        1
  •  0
  •   DTYK    6 年前

    这就是你想要的吗?在下面的示例中,输出按主题ID显示maxwght列的最大值。例如,如果需要每个主题ID的maxwght平均值,可以将max()替换为mean。

    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()