如何解决对R中的p值进行bin /分类
如何在R中创建一个函数,该函数可以如下转换我的p值?
If p>0.05 -> ns
If p<0.05 -> 1
If p<10-2 -> 2
If p<10-3 -> 3
If p<10-4 -> 4
etc...
解决方法
我们可以使用case_when
进行自定义类别
library(dplyr)
f1 <- function(pval) {
case_when(pval > 0.5 ~ 'ns',pval < 1e-4 ~ '4',pval < 1e-3 ~ '3',pval < 1e-2 ~ '2',pval < 0.05 ~ '1'
)
}
f1(c(0.04,1.2,0.00005))
#[1] "1" "ns" "4"
,
如果您只想降低到10e-4,则@akrun答案很好。一路追随功率的更一般的解决方案可能如下所示:
# from here: https://stackoverflow.com/questions/6461209/how-to-round-up-to-the-nearest-10-or-100-or-x
roundUp <- function(x) 10^ceiling(log10(x))
categorize_p = function(ps) {
logged = -log10(roundUp(ps))
logged[ps > .05] = "ns"
return(logged)
}
categorize_p(c(.1,.049,.001,.01))
#[1] "ns" "1" "3" "2"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。