【问题标题】:How to group rows in r based on row number如何根据行号对r中的行进行分组
【发布时间】:2017-07-26 21:16:24
【问题描述】:

我想根据它们的行号创建 2 个组(第 1 组是第 2 到 47 行,第 2 组是第 48 到 92 行)。这些组是我表现最好和最差的样本,我想比较 12 个数据列(正在测试的基因)中的组值。所以,我的最终目标是将样本分成适当的组,并对每个测试基因的组值进行统计分析。这是我桌子的一小部分:

Sample    icaA   icaB   icaC   icaD
ST1       12     13     15     18
ST2       11     9      8      16
ST3       15     18     18     15
ST4       13     16     17     20

我不知道我是否可以使用 cbind 来组合这些组。我想我也见过其他人翻转行和列;如果需要,我可以这样做。我只是该软件的初学者,所以任何建议都会很棒!

【问题讨论】:

  • 我们能获得更多关于您想要的统计分析类型的信息吗?
  • T 检验,标准差,均值
  • 我肯定需要更多关于您希望输出的准确程度的信息;目前还不是很清楚(或者可能只是我)。所以我在黑暗中拍了一张照片,假设你想要什么。
  • 上表没有实际数据,只是一些缩短后的示例。

标签: r row grouping


【解决方案1】:

获取第一组:

df1 <- df[2:47, ]

获取第二组:

df2 <- df[48:92, ]

对吗?

然后您可以在每一列上运行统计信息,例如,像这样:

apply(df1[-1], 2, mean)

...获取第一组中每一列的平均值。

那么对于第二组每一列的平均值:

apply(df2[-1], 2, mean)

然后将每个组再次绑定到 1 个数据帧(或矩阵)中,然后我建议:

rbind(df1, df2)

【讨论】:

  • 分组工作,但应用功能只是带来了 NA 值。 apply(Top25, 2, mean) 输出:样本 icaA_ddCT icaB_ddCT icaC_ddCT icaD_ddCT fnbA_ddCT fnbB_ddCT clfA_ddCT NA NA NA NA NA NA NA NA clfB_ddCT fib_ddCT ebps_ddCT eno_ddCT cna_ddCT NA NA NA NA NA
  • 您的数据中有 NA 值吗?另外,您的变量是数字类还是整数类,还是属于字符类?用sum(is.na(Top25))检查前者,用str(Top25)检查后者
  • 好的,所以对于Top25,试试apply(Top25[-1], 2, mean),这将忽略第一列,这是因素,这就是为什么所有列都显示为NA。然后Bottom25 具有NA 值,因此我们可以通过在平均值计算中仅包括非NA 值来计算这些列的平均值,apply(Bottom25[-1], 2, mean, na.rm = TRUE)。这应该有效。 :)
  • 或者,例如,您可以使用library(dplyr); Top25 %&gt;% summarise_all(mean)
  • 我也经历了,只是对 Bottom25 组做了 na.omit,这样可以永久清除那些 NA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
相关资源
最近更新 更多