r - 行之间的 T 检验 - 匹配字符串名称
问题描述
Names
与两者相比,我想执行 t 检验并提取所有的 pvalue References
。这就是数据的样子:
dput(data)
structure(list(Area = c(3.62, 12.14, 13.74, 3.14, 131.86,
7.14, 14.66, 15.38, 12, 13.02, 192.12, 21.54, 13.38, 55.84, 23.86,
5.38, 200.56, 11.06, 12.12, 41.98, 33.32, 6.96, 210.12, 3.56),
Names = c("Mark", "Peter", "Greg", "Manuel", "Reference1",
"Reference2", "Mark", "Peter", "Greg", "Manuel", "Reference1",
"Reference2", "Mark", "Peter", "Greg", "Manuel", "Reference1",
"Reference2", "Mark", "Peter", "Greg", "Manuel", "Reference1",
"Reference2")), row.names = c(NA, -24L), class = "data.frame")
我想Area
对每个Name
(马克、彼得、格雷格、曼努埃尔)进行 4 次重复,并将其Reference1
与Reference2
区域进行比较。怎么做 ?
解决方案
library(data.table)
library(magrittr)
df <- setDT(df)
我会首先得到不是唯一名称的列表Reference
:
namelist <- grep("^(?!Reference).*$",df$Names,perl = T,value = T) %>% unique()
然后只需使用sapply
和t.test
函数在名称变量和引用之间进行 t.test: for Reference1
:
sapply(namelist,function(nom){
t.test(df[Names == nom,Area],df[Names == "Reference1",Area])$p.value
})
Mark Peter Greg Manuel
0.0019808894 0.0007699491 0.0016631637 0.0019262987
对于第二个参考:
sapply(namelist,function(nom){
t.test(df[Names == nom,Area],df[Names == "Reference2",Area])$p.value
})
Mark Peter Greg Manuel
0.9802556 0.1460768 0.1690645 0.4439897
我使用 data.table 只是为了简单地设置 data.table 的子集,但可以使用任何你喜欢的东西。在基础 R 中,你会做df$Area[df$Names == nom]
而不是df[Names == nom,Area]
推荐阅读
- java - 我有一个扩展 javafx stackpane 的类,并且在该类中想要创建一个菜单栏,其中包含一个带有项目的菜单
- malloc - 您如何轻松区分 * 作为指针的使用,* 作为取消引用运算符,* 作为 C 中的乘法运算符?
- java - 无法收集更改,错误:列出远程引用失败:org.eclipse.jgit.errors.TransportException:
- python - 从 DataFrame 中解包列表和元组
- c - 嵌套循环分析(每个循环边界内循环)
- c# - 超出 Google Calendar Api v3 配额
- haskell - Haskell do notation 边缘情况无法进行类型检查
- design-patterns - 在用户纠正过去事件的虚假数据后,如何有效地更新应用程序的状态?
- r - 如何在弹性迷你吧上叠加值?
- java - 用于替换所有出现的特定单词“工作怪异”的 JAVA 正则表达式