对一列数据进行配对t检验
Conduct paired t-test for data in one column
我正在尝试对一列中的变量进行配对 t 检验
这是我的数据示例:
datexample <- data.frame(
"time" = c("before","after"),
"site" = c("A","B","B","A","A","B","B","A"),
"valueA" = c("13","-10", "-5", "18","-14","12", "-17", "19"),
"valueB" = c("-3","20", "15", "-16","12","15", "-11", "14")
)
输出如下:
time site valueA valueB
before A 13 -3
after B -10 20
before B -5 15
after A 18 -16
我正在尝试进行四个配对 t 检验来检查:
- T 检验以确定时间之间的值 A 是否存在差异(之前与之后)在站点 A
- T 检验以确定时间之间的值 B 是否存在差异(之前与之后)在站点 A
- T 检验以确定时间之间的值 A 是否存在差异(之前与之后)在站点 B
- T 检验以确定时间之间的值 B 是否存在差异(之前与之后)在站点 B
为了 运行 t 检验,我需要重新排列我的数据,以便前后是每一列(而不是在时间列内)。
我试过看 ,像这样:
dat_wide <- reshape(datexample, idvar = "time", timevar = "site", direction = "wide")
dat_wide
但我最终得到了一个只有两行和很多列的数据集:
time valueA.A valueB.A valueA.B valueB.B
before 13 -3 -5 15
after 18 -16 -10 20
如有任何帮助,我们将不胜感激。
如果我们想对每个 'site' 的 'value' 列执行 t.test
,那么在按 'site'、select 的列分组后对 summarise_at
感兴趣,并通过对 'time' 为 'before'/'after'
的值进行子集化来执行 t.test
library(dplyr)
datexample %>%
type.convert(as.is = TRUE) %>%
group_by(site) %>%
summarise_at(vars(starts_with('value')), ~
t.test(.[time == 'before'], .[time == 'after'])$p.value)
# A tibble: 2 x 3
# site valueA valueB
# <chr> <dbl> <dbl>
#1 A 0.393 0.784
#2 B 0.464 0.439
我正在尝试对一列中的变量进行配对 t 检验
这是我的数据示例:
datexample <- data.frame(
"time" = c("before","after"),
"site" = c("A","B","B","A","A","B","B","A"),
"valueA" = c("13","-10", "-5", "18","-14","12", "-17", "19"),
"valueB" = c("-3","20", "15", "-16","12","15", "-11", "14")
)
输出如下:
time site valueA valueB
before A 13 -3
after B -10 20
before B -5 15
after A 18 -16
我正在尝试进行四个配对 t 检验来检查:
- T 检验以确定时间之间的值 A 是否存在差异(之前与之后)在站点 A
- T 检验以确定时间之间的值 B 是否存在差异(之前与之后)在站点 A
- T 检验以确定时间之间的值 A 是否存在差异(之前与之后)在站点 B
- T 检验以确定时间之间的值 B 是否存在差异(之前与之后)在站点 B
为了 运行 t 检验,我需要重新排列我的数据,以便前后是每一列(而不是在时间列内)。
我试过看
dat_wide <- reshape(datexample, idvar = "time", timevar = "site", direction = "wide")
dat_wide
但我最终得到了一个只有两行和很多列的数据集:
time valueA.A valueB.A valueA.B valueB.B
before 13 -3 -5 15
after 18 -16 -10 20
如有任何帮助,我们将不胜感激。
如果我们想对每个 'site' 的 'value' 列执行 t.test
,那么在按 'site'、select 的列分组后对 summarise_at
感兴趣,并通过对 'time' 为 'before'/'after'
t.test
library(dplyr)
datexample %>%
type.convert(as.is = TRUE) %>%
group_by(site) %>%
summarise_at(vars(starts_with('value')), ~
t.test(.[time == 'before'], .[time == 'after'])$p.value)
# A tibble: 2 x 3
# site valueA valueB
# <chr> <dbl> <dbl>
#1 A 0.393 0.784
#2 B 0.464 0.439