我有如下数据:
RNA$MMP2
[1] 1.506000000 0.957833333 2.285500000 -0.089333333 -1.233166667
[6] 1.591500000 -1.396500000 -0.260500000 0.583000000 -0.716333333
[11] 1.628833333 -0.390000000 -0.466166667 -0.550666667 1.001666667
[16] 1.399000000 -0.454500000 -0.492833333 0.695166667 0.397666667
Run Code Online (Sandbox Code Playgroud)
如果我要根据某个阈值(例如 1.0)用字符变量替换这些数字变量,我会实现以下内容:
ifelse(RNA$MMP2 <= 1.0 ,"low","high")->x
Run Code Online (Sandbox Code Playgroud)
如果我需要分类为三个字符变量怎么办:
a) RNA$MMP2 < 0.5 ,"low";
b) RNA$MMP2 > 0.5 and < 1.0, "medium";
c) RNA$MMP2 > 1.0, "high";
Run Code Online (Sandbox Code Playgroud)
建议将不胜感激。
一种选择是cut针对多种情况执行此操作
cut(RNA$MMP2, breaks = c(-Inf, 0.5, 1.0, Inf),
labels = c("low", "medium", "high"))
Run Code Online (Sandbox Code Playgroud)
如果有两个以上的组,ifelse则需要嵌套
with(RNA, ifelse(MMP2 < 0.5, "low",
ifelse(MMP2 >= 0.5 & MMP2 < 1.0, "medium", "high"))
Run Code Online (Sandbox Code Playgroud)
dplyrcase_when()对于这些类型的情况来说,这是一个很好的选择:
library(dplyr)
RNA %>% mutate(MMP2 = case_when(
MMP2 < 0.5 ~ "low",
MMP2 > 0.5 & MMP2 < 1 ~ "medium",
MMP2 > 1 ~ "high"
))
Run Code Online (Sandbox Code Playgroud)