Cut数据分组的统计摘要

格雷厄姆·托宾(Graham Tobin)

我有数百份数据,这些数据可从多份研究论文中获得不同年龄的小型动物的体重。我想按年龄分组和分析体重,持续7天。我已经使用cut in R成功地按年龄对数据进行分组,并在每个7d bin中具有默认数量的值(计数)。但是即使经过大量谷歌搜索,我也找不到扩展“切割”的方法来获得每个年龄段的基本统计摘要,包括均值,SE,CL和中位数。那有可能吗,有人可以帮助我或指出正确的方向吗?

我还查看了dplyr,尽管它似乎具有提供统计摘要的功能,但是我看不到一种按7d间隔对年龄进行分组的方法。那会是更好的选择吗?

感谢您非程序员的帮助。

附加信息

感谢你们双方的意见。抱歉,我们提供的信息有限,希望这可以解决问题。我在Excel中有2000多行数据。行是以天为单位的年龄,列是“ MaleFI”,“ MaleMEI”和“ MaleBW”,其中FI是食物摄入量,MEI是可代谢能量摄入,BW是体重。数据的一部分如下所示。通常,我可以使用Excel数据透视表来分析数据,但其中不包含计算中位数或标准误差的选项;Power Pivot可以但不能分组!因此,数据如下(按天数排序,没有空格):

  • 年龄男FI男MEI男BW
  • 28.00 14.62 212.66 121.68
  • 28.00 13.82 201.03 112.15
  • 28.00 13.82 201.03 112.15
  • 29.00 15.12 220.31 125.14 ...

年龄是连续的,可能会上升到约900个,每个年龄的值都有不同的数量。

我们的目标是按7d周期分组,并且如上所述,我对每组进行了统计分析:

  • 年龄男性FI男性MEI男性BW
  • 21-28均值均值
  • SE SE SE
  • 中位数中位数中位数
  • 29-35均值均值
  • SE SE SE
  • 中位数中位数中位数
  • 36-42等

这是我用来对数据进行分组的代码,但是如前所述,事后看来,可能将dplyr与group_by一起使用并进行汇总可能是一种更好的方法。

library("xlsx")
library("dplyr")
Pivot.data <- read.xlsx(file.choose(), 1)  # read first sheet
pt<-cut(Pivot.data$Age, breaks=seq(21, 800, by=7))
table(pt)

输出为(21,28](28,35](35,42](42,49](49,56](56,63](63,70](70,77]
6 15 41 73 92 98 95 99

我会对范围的格式感到满意,即(21,28]等而不是21-28。

感谢您的评论,对不起,您没有明确要求。感谢您付出宝贵的时间来提供帮助。

丹,这是使用dput的输出:

dput(head(Pivot.data,20))结构(list(Age = c(28,28,28,28,28,28,30,35,35,35,35,35,35,35,35,35,35 ,35,35,35,35),MaleFI = c(14.62,13.82,10.6691449814126,15.9859154929577,11.7,14.0273778252258,13.5877862595419,17.73,17.93,17.99,22.1214285714286,17.6,22.48,21.7,19.6,21.4,21.25,20.37, 19.3215613382899,23.169014084507),MaleMEI = c(212.66252,201.02572,144.342862453531,216.273450704225,160.171462269,204.047711328562,197.653240885495,257.90058,241.76812,261.68254,298.285342857,29.345.243.143.345 MaleBW = c(121.68,112.15,85.7142857142856,143.181818181818,109.20245398773,89.8187948576385,126.522593320235,131.96,127.98,142.57,126.92,146.9,145.45,131.9,129.8,132.4,191.21,179.44238,138。272727272727)),row.names = c(NA,20L),class =“ data.frame”)

丹·查尔蒂尔

如果我理解正确(但是请下次尝试包含可复制的示例),则此代码应执行以下操作:

library(tidyverse)
your_df %>% 
  # mutate(Age_cl = cut(Age, c(-Inf,30,60,Inf))) %>% 
  mutate(Age_cl = cut(Age, breaks=c(-Inf, seq(min(Age), max(Age), by=7), Inf), right = F)) %>%
  group_by(Age_cl) %>% 
  summarise(
    n=n(),
    m=mean(Age, na.rm=T),
    sd=sd(Age, na.rm=T),
    max=max(Age, na.rm=T),
    min=min(Age, na.rm=T)
  )

您创建了age_cl作为的结果的新列cut,然后按此新列和summarise(或可以mutate再次根据需要)所有所需的摘要进行分组

您还可以使用summarise_at一系列功能:

your_df %>% 
  mutate(Age_cl = cut(Age, c(-Inf,30,60,Inf))) %>% 
  group_by(Age_cl) %>% 
  summarise_at("Age", list(m=mean, sd=sd, max=max, min=min), na.rm=T)

请注意,其他参数将适用于所有功能,例如na.rm此处。

编辑:对于记录,似乎有一种使用该summary函数的方法,但是您必须将其结果转换为data.frame才能起作用。summary与像上面那样编写函数相比,这可能不值得这是iris数据集的示例

iris %>% 
  mutate(Sepal.Length_cl = cut(Sepal.Length, c(-Inf,5,6,Inf))) %>% 
  group_by(Sepal.Length_cl) %>% 
  group_modify(~summary(.$Sepal.Length) %>% unclass %>% t %>% as.data.frame)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Julia中分组列的多个摘要统计信息

来自分类Dev

Julia中分组列的多个摘要统计信息

来自分类Dev

如何在没有当前行值的情况下对熊猫数据框进行分组并计算统计摘要(均值和标准差)?

来自分类Dev

列表中多个数据框的摘要统计

来自分类Dev

计算数据框中列的摘要统计信息

来自分类Dev

R-数据帧中非空元素的摘要统计

来自分类Dev

数据帧中特定格式的数字变量的摘要统计

来自分类Dev

无法遍历数据框并生成摘要统计信息

来自分类Dev

需要帮助获取R数据框的摘要统计信息

来自分类Dev

摘要统计数据节省时间

来自分类Dev

获取列表中嵌套数据框的摘要统计信息

来自分类Dev

Pandas 数据框分组多年滚动统计

来自分类Dev

Spark:摘要统计信息

来自分类Dev

proc摘要统计“乘”

来自分类Dev

使用Sunspot在Solr中按统计数据分组

来自分类Dev

如何使用R对数据进行分组和统计

来自分类Dev

按两个元素分组的数据框的统计信息

来自分类Dev

从统计模型摘要生成HTML

来自分类Dev

Python中的统计摘要记录

来自分类Dev

统计摘要乐趣值表示

来自分类Dev

R ddply行摘要统计

来自分类Dev

熊猫模糊组摘要统计

来自分类Dev

否定选择数据框后如何在R中获得摘要统计信息

来自分类Dev

使用group_by()使用dplyr计算数据框的摘要统计信息

来自分类Dev

如何在Pandas数据框中计算汇总的摘要统计信息

来自分类Dev

如何在不是因素的2个数据框列上运行摘要统计信息?

来自分类Dev

JQuery GridView分组摘要

来自分类Dev

分组描述统计

来自分类Dev

分组统计测试tidyverse