您面临的挑战是数据太“宽”:当每个蛋白质至少有 5 个数据点时,您将其表示为一行。
如果你重塑它,问题会变得更容易。在这里,我将使用 tidyr 的pivot 函数以及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)
如果没有可重现的示例,我无法进行测试,但这应该会给您一个包含protein
、condition
、sample
(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)
这将为您提供每种蛋白质的 、 和 列estimate
(statistic
置信p.value
区间等)。