首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较多列与其他列的t检验

比较多列与其他列的t检验
EN

Stack Overflow用户
提问于 2021-03-23 17:10:21
回答 1查看 113关注 0票数 0

我是相对较新的R,需要一些帮助,我的数据分析。在所附表格中,主蛋白加入栏包括在三种条件下,即对照(C)、脱水(D)和再水化(R)下皮层(C)增加或减少的蛋白质清单。每个条件有5个样品: CC(1,2,3,4和5),CD(1,2,3,4和5)和CR(1,2,3,4和5)。我需要做一个t检验,比较皮质控制(CC1,2,3,4和5)样品与皮质脱水(CD1,2,3,4和5)样品中的所有蛋白质。这样,当我运行代码时,第1行CC1值将根据第1行CD1值进行t测试,第2行CC1值将根据第2行CD1值进行t测试,依此类推。

我试过了

代码语言:javascript
运行
复制
apply(allcor1, function(x){t.test(x[2:12],x[4:14], nchar)})

但它给了我

错误在match.fun(乐趣):参数“乐趣”是缺少的,没有默认的

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 12:58:33

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

如果你重塑这个问题,问题就会变得更容易。这里我将使用tidyr的枢轴函数以及提取

代码语言:javascript
运行
复制
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对CD进行CC分组t测试,并使用扫帚包对其进行整理。

代码语言:javascript
运行
复制
library(broom)

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66767956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档