首页 > 解决方案 > t 使用 mutate 在 R 中的数据帧中进行测试

问题描述

我正在努力计算 R 中数据框中的 2 组之间的 t 检验。下面的示例代码生成了一个包含 2 列的数据框:变量和值。有 2 个变量:“M”和“F”。

data <- data.frame(variable = c("M", "F", "F"), value = c(10,5,6))

我需要证明 M 和 F 的值在统计上彼此不同。换句话说,10 在统计上与 5 和 6 的平均值不同。我需要在此数据框中添加另一列来显示 p 值。当我运行下面的代码时,它给出了以下错误:

result <- data %>% mutate(newcolumn = t.test(value~variable))

t.test.default(x = c(5, 6), y = 10) 中的错误:没有足够的 'y' 观察

标签: r

解决方案


我不明白这个问题。

测试本身可以作为平均值的一个样本 t 测试运行。这将是

t.test(x = c(5, 6) - 10)

如果要测试运行包dplyr管道:

library(dplyr)

fun_t_test <- function(x){
  tryCatch(t.test(x)$p.value, error = function(e) NA)
}

data %>%
  mutate(newvalue = value - mean(value[variable == "M"])) %>%
  group_by(variable) %>%
  summarise(p.value = fun_t_test(newvalue))
## A tibble: 2 x 2
#  variable p.value
#  <fct>      <dbl>
#1 F         0.0704
#2 M        NA    

推荐阅读