如何 运行 对 R 中的行子集进行 t 检验

How to run t-test with subset of rows in R

以下是我的部分数据(pairht_protein)

我正在尝试 运行 对两组之间的所有变量(列)进行 t 检验,它们是:

Resistant_group <- c(PAIR-01, PAIR-12, PAIR-09)
Sensitive_group <- c(PAIR-07, PAIR-02, PAIR-05)

在创建函数之前,我厌倦了选择一个变量并尝试了:

t.test(m_pHSL660 ~ Subject, data = subset(pairht_protein, Subject %in% c("Resistant_group", "Sensitive_group")))

但是它给了我一个错误:'grouping factor must have exactly 2 levels'

有没有办法在这些组之间进行 运行 t 检验?并可能将其作为一个函数?

首先,您必须更正定义组的方式(不能在变量名称上使用破折号):

Resistant_group <- c('PAIR-01', 'PAIR-12', 'PAIR-09')
Sensitive_group <- c('PAIR-07','PAIR-02','PAIR-05')

然后,使用 dplyr 包创建另一个只有两个水平的因子变量:

library(dplyr)

# assuming pairht_protein is your dataset name

pairht_protein <- pairht_protein %>% mutate(sub = case_when( subject %in% Resistant_group ~1,
                                  subject %in% Sensitive_group ~2),
                          sub = as.factor(sub))

因为这个新变量将为您组外的元素生成 NA 值,所以您不需要子集化:

t.test(m_pHSL660 ~ sub, data =pairht_protein)