用R的数据框中的星星替换p值

Syl*_*uez 1 r substitution dataframe p-value

我有一个data.frame dfP与一列Spearman_p包含的p值(数字数据)。我想用它们代替p值摘要星号。我使用以下代码:

 dfP$Spearman_p[dfP$Spearman_p < 0.0001] <- "****"
 dfP$Spearman_p[dfP$Spearman_p < 0.001] <- "***"
 dfP$Spearman_p[dfP$Spearman_p < 0.01] <- "**"
 dfP$Spearman_p[dfP$Spearman_p < 0.05] <- "*"
 dfP$Spearman_p[dfP$Spearman_p > 0.05] <- "ns"
Run Code Online (Sandbox Code Playgroud)

但是,这会将所有 <0.05的p值(<0.01的那些)也更改为*(一星)。

我怀疑R在后续步骤中将****视为数字<0.05。那是对的吗?如果是这样,请问我该如何规避?

谢谢。

Rui*_*das 5

尝试使用以下功能。一次性更改整个向量。

makeStars <- function(x){
  stars <- c("****", "***", "**", "*", "ns")
  vec <- c(0, 0.0001, 0.001, 0.01, 0.05, 1)
  i <- findInterval(x, vec)
  stars[i]
}

dfP$Spearman_p <- makeStars(dfP$Spearman_p)
Run Code Online (Sandbox Code Playgroud)

但是,如果创建一个新向量,可能会更好。

dfP$Spearman_p_stars <- makeStars(dfP$Spearman_p)
Run Code Online (Sandbox Code Playgroud)