【问题标题】:R dplyr group_by subject appears to use entire dataframe instead of subjectR dplyr group_by 主题似乎使用整个数据框而不是主题
【发布时间】:2018-06-12 00:30:48
【问题描述】:

背景 我正在使用 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()

测试数据帧示例:

在此处查找我的数据集的 .csv 示例: https://drive.google.com/file/d/1wGkSQyJXqSswThiNsqC26qaP7d3catyX/view?usp=sharing

【问题讨论】:

  • 从你的工作空间中删除plyr,只加载dplyr,因为它们之间有很多冲突。
  • 或依次加载plyr 然后dplyr

标签: r dplyr plyr


【解决方案1】:

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

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

【讨论】:

  • @Nowak 我的解决方案有效吗?如果是这样,如果您能给我打勾/关闭问题,我将不胜感激。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2019-05-21
  • 2016-12-08
  • 1970-01-01
相关资源
最近更新 更多