r - 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' 观察
解决方案
我不明白这个问题。
测试本身可以作为平均值的一个样本 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
推荐阅读
- mysql - 由于用户变量太长而无法运行准备好的语句?
- python - 如何将文本文件作为字符串读取?
- xml - How can I alter struct XML tags in go?
- java - Java:动态类型约束
- c# - 带有自定义 .nuspec 元数据的 nuget pack .csproj
- java - QueryDsl 避免多个 if 块
- mysql - 获取与供应商的外键值相同的最后插入(最新添加)的合同 ID
- heroku - Specified query type "Query" not found in document when deploying to heroku
- python - Function python for odoo 10
- javascript - 制作适用于多种分辨率的 2 列布局的最佳方法是什么?