首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据R中列内的值有条件地执行许多many测试?

如何根据R中列内的值有条件地执行许多many测试?
EN

Stack Overflow用户
提问于 2020-01-23 18:20:12
回答 1查看 310关注 0票数 2

我想要创建一个函数(或者一次执行测试的方法)来完成Mann测试。我想在同一时间内分析两个不同CC条件之间的logSG值。因此,对于后续数据,我想要3p-值,对应于每次。

我的样本数据:

代码语言:javascript
复制
structure(list(Time = c("30", "30", "30", "30", "30", "30", "30", 
"30", "30", "30", "30", "30", "30", "60", "60", "60", "60", "60", 
"60", "60", "60", "60", "60", "90", "90", "90", "90", "90", "90", 
"90", "90", "90"), CC = c("Scramble", "Scramble", "Scramble", 
"Scramble", "Scramble", "Scramble", "Scramble", "Scramble", "KD", 
"KD", "KD", "KD", "KD", "Scramble", "Scramble", "Scramble", "Scramble", 
"Scramble", "KD", "KD", "KD", "KD", "KD", "Scramble", "Scramble", 
"Scramble", "Scramble", "KD", "KD", "KD", "KD", "KD"), logSG = c(0, 
6.29469069760774, 6.97548510669835, 0, 0, 5.6529880324294, 0, 
0, 0, 0, 0, 5.84818081635987, 0, 6.33960454566506, 0.410736902037262, 
0, 0, 0, 0, 0.0294484401648161, 0, 1.03061195077248, -1.30321174424293, 
-1.25902114646857, 0, 0, 0.787059500696643, 3.54611686297603, 
0, 0, -0.297732408305282, 0)), row.names = c(NA, -32L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x7f9b120204e0>)

我试着在每一个时间点上跟随:

代码语言:javascript
复制
e <- result[result$Time == 30,]
wilcox.test(SG ~ CC, data=e)

这既笨重又低效。

或者,我很难让它起作用:

代码语言:javascript
复制
t <- result %>% group_by(Time) %>% do(te=wilcox.test(logSG ~ CC))

如果可能的话,我想学习如何使用dplyrm/s/apply来完成这个任务。

参考资料:链接 链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-23 18:21:25

如果我们使用的是do,那么指定data

代码语言:javascript
复制
library(dplyr)
result %>%
     group_by(Time) %>%
     do(te=wilcox.test(logSG ~ CC, data = .)) 

或在map ed数据集上使用nest

代码语言:javascript
复制
library(purrr)
result %>%
   group_by(Time) %>%
   nest %>%
   mutate(te = map(data, ~ wilcox.test(logSG ~ CC, data = .x) ))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59884876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档