问题描述
我对 R 非常陌生(所以我知道我做错了什么)。但是我有 8 个样本:4 名参与者接受了两种治疗(对照、药物)并且我有多个测量值(每个测量值不同的行)。像这样:
测量 | A_Ctrl | B_Ctrl | C_Ctrl | D_Ctrl | A_Drug | B_Drug | C_Drug | D_Drug |
---|---|---|---|---|---|---|---|---|
第一次 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 |
第二个 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 | 0.1939 |
我想添加另一列,使用配对 t 检验计算每行的 p 值。我希望代码使用代码中的列号,因为我正在考虑删除参与者,如果他们的数据看起来与我的初步数据显示的其他人不同。
我一直在查看有关堆栈溢出的其他类似问题,但似乎无法让它们起作用。这种格式的东西能用吗?
df$PValue <- t.test(df[2:5],df[6:9],alternative = "two.sided",paired=TRUE)
其中 df 是我导入到 RStudio 中的 Excel 工作表。
解决方法
如果你想从 t 测试中得到 p 值,你应该使用 $
符号:
first_p <- t.test(df[2:5],df[6:9],alternative = "two.sided",paired=TRUE)$p.value
,
如果您想为每一行应用 t.test
,您可以使用 apply
:
df$PValue <- apply(df[-1],1,function(x) t.test(x[1:4],x[5:8],paired=TRUE)$p.value)
请注意,我使用了 1:4
和 5:8
,因为我忽略了 df[-1]
中的第一列 (apply
)。