使用mutate在R中的数据帧中进行t测试

使用mutate在R中的数据帧中进行t测试,r,R,我正在努力计算R中数据框中两组之间的t检验。下面的示例代码生成一个包含两列的数据框:变量和值。有两个变量:M和F data <- data.frame(variable = c("M", "F", "F"), value = c(10,5,6)) 我需要证明M和F的值在统计学上是不同的。换句话说,10在统计上不同于5和6的平均值。我需要在此数据框中添加另一列,显示p值。当我运行下面的代码时,会出现以下错误: result <- data %>% mutate(newcolum

我正在努力计算R中数据框中两组之间的t检验。下面的示例代码生成一个包含两列的数据框:变量和值。有两个变量: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.defaultx=c5,6,y=10中的错误:
没有足够的“y”观察

我不理解这个问题

测试本身可以作为平均值的单样本t测试。是的

t.test(x = c(5, 6) - 10)
如果要测试运行包dplyr管道:


Hi@xilliam我添加了代码以生成一个小样本数据集错误告诉您它无法进行t测试,因为您没有足够的值。当其中一个组只有一个值时,t检验在数学上是不可能的。谢谢@IceCreamToucan,,是的,我想是的。对不起,我的概念在这里有点弱。最初我认为一个组中的一个值可以与其他值的平均值进行比较。你能进一步解释为什么不可能吗?提前多谢!
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