r - 对一列中的数据进行配对 t 检验
问题描述
我正在尝试对一列中的变量进行配对 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 的时间(之前与之后)之间的 valueA 是否存在差异
- T 检验以确定站点 A 的时间(之前与之后)之间的 valueB 是否存在差异
- T 检验以确定站点 B 的时间(之前与之后)之间的 valueA 是否存在差异
- T 检验以确定站点 B 的时间(之前与之后)之间的 valueB 是否存在差异
为了运行 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
任何帮助,将不胜感激。
解决方案
如果我们想t.test
对每个“站点”的“值”列进行操作,那么在按“站点”分组后,选择感兴趣的列summarise_at
,并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
推荐阅读
- jsf - 点击建议后 inputtextarea 会触发任何事件吗?
- azure - 用于 webhook 的 Azure RM 模板 resourceId()
- email - 通过 Godaddy 使用 Classic ASP 发送电子邮件
- python - 在一行中用函数填充一个 numpy 二维数组
- r - list.files 输出,语言环境依赖
- css - 使用方尖碑时将css文件放在哪里
- flow-project - 结果集数_this_iter 和 timesteps_this_iter
- sql - SQL Server CASE 语句计算表达式一次
- reactjs - 从反应面板插件更新模板变量
- flutter - 从 Json 响应颤动中删除重复项