首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中的Bin/分类p值

R中的Bin/分类p值
EN

Stack Overflow用户
提问于 2020-11-01 21:16:34
回答 2查看 48关注 0票数 1

如何在R中创建一个函数来转换我的p值,如下所示?

代码语言:javascript
运行
复制
 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...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-01 21:20:04

我们可以使用case_when来执行自定义类别

代码语言:javascript
运行
复制
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"            
票数 1
EN

Stack Overflow用户

发布于 2020-11-01 21:30:13

如果你只关心降低到10e-4的话,@akrun的答案是好的。一个更普遍的解决方案,在所有权力的所有下降可能是如下:

代码语言:javascript
运行
复制
# 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" 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64637080

复制
相关文章

相似问题

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