【问题标题】:T-test comparing multiple columns to other columns将多列与其他列进行比较的 T 检验
【发布时间】:2021-03-23 17:10:21
【问题描述】:

我对 R 比较陌生,需要一些数据分析方面的帮助。在附表中,Master Protein Accession 列包含在三个条件下,即对照 (C)、脱水 (D) 和再水化 (R) 中皮质 (C) 中增加或减少的蛋白质列表。每个条件有5个样本; CC(1,2,3,4 和 5),CD(1,2,3,4 和 5)和 CR(1,2,3,4 和 5)。我需要进行 t 检验,以分别比较所有蛋白质的 Cortex Control(CC1、2、3、4 和 5)样本与 Cortex 脱水(CD1、2、3、4 和 5)样本。这样当我运行代码时,第 1 行 CC1 值对第 1 行 CD 1 值进行 t 检验,第 2 行 CC1 值对第 2 行 CD 1 值进行 t 检验,依此类推。

我试过了

apply(allcor1, function(x){t.test(x[2:12],x[4:14], nchar)})

但它给了我

match.fun(FUN) 中的错误:缺少参数“FUN”,没有默认值

【问题讨论】:

  • 这是在 Excel 中吗?您是否检查过 Microsoft 文档以了解您正在使用的 Excel 版本?是否必须安装统计扩展程序?
  • 嗨,杰森,谢谢。是的,原始数据在 excel 中,但我必须在 R 中进行 t 检验。我已设法在 R 中导入数据,但我似乎找不到以我的方式运行 t 检验的脚本如上所述,
  • 我现在改成R了。
  • 嗨,里兹万。尝试阅读t.test() 的帮助文件(从您的R 控制台运行?t.test)并使用该信息,您可以自己解决它,如果不是,您可以编辑问题并提供有关您的目标的更具体信息。跨度>
  • 嗨马塞洛,谢谢。我已经尝试过这样做。我是新手,但可以找到基本 R 的方法。但这有点复杂。我将编辑问题并提供更具体的信息。

标签: r bioinformatics t-test protein-database google-genomics


【解决方案1】:

您面临的挑战是数据太“宽”:当每个蛋白质至少有 5 个数据点时,您将其表示为一行。

如果你重塑它,问题会变得更容易。这里我将使用tidyr的pivot functions,以及extract

library(dplyr)
library(tidyr)

# Removing the "sd" columns,
# and renaming first column to "protein" to be easier to work with
longer_data <- yourdata %>%
  select(-starts_with("sd")) %>%
  rename(protein = 1) %>%
  # pivot all columns besides protein into one column condition_sample
  pivot_longer(cols = c(-protein),
               names_to = "condition_sample") %>%
  # Split your CC1, CD2, etc into two columns after the second letter
  separate(condition_sample, c("condition", "sample"), 2) %>%
  # Make them wide again by condition
  pivot_wider(names_from = condition, values_from = value)

如果没有可重现的示例,我无法进行测试,但这应该会为您提供一个包含 proteinconditionsample (1-5) 和 value) 列的表格。

此时,数据更灵活地用于统计建模,例如配对 t 检验。我在这里使用 dplyr 对 CC 对 CD 进行分组 t 检验,并使用 broom 包对其进行整理。

library(broom)

longer_data %>%
  group_by(protein) %>%
  summarize(tidied_model = list(tidy(t.test(CC, CD, paired = TRUE)))) %>%
  unnest(tidied_model)

这将为您提供每种蛋白质的 estimatestatisticp.value 列(置信区间等)。

【讨论】:

  • 感谢大卫。 long_data 是一个函数吗?因为现在我得到这个错误rlang::last_error() 看看错误发生在哪里`
  • 您必须运行定义longer_data 的第一段代码。 (在此处使用您的变量名而不是 yourdata)。
  • 在回答您的问题时,"condition_sample" 是新列的名称,然后在下一行 separate() 中引用该列。 (它可以是任何东西;我这样命名它是因为它是条件和样本编号的组合)。您可以在此处阅读 pivot_longerpivot_wider 函数的工作原理:tidyr.tidyverse.org/articles/pivot.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多