我想使用apply来替换数据帧中的值,如果> 8 1星,如果> 10 2星,如果> 12 3星,否则NS.
mydata<-data.frame(A=1:10, B=3:12, C=5:14)
apply(mydata, 2, function(x) ifelse(x > 12, "***"|x > 10, "**"|x >= 8, "*"|x <8, "NS", x))
Run Code Online (Sandbox Code Playgroud)
一个tidyverse替代用case_when:
mydata %>%
mutate_all(funs(case_when(. > 12 ~ '***',
. > 10 & . <= 12 ~ '**',
. >= 8 & . <= 10 ~ '*',
. < 8 ~ 'NS')))
Run Code Online (Sandbox Code Playgroud)
这使:
Run Code Online (Sandbox Code Playgroud)A B C 1 NS NS NS 2 NS NS NS 3 NS NS NS 4 NS NS * 5 NS NS * 6 NS * * 7 NS * ** 8 * * ** 9 * ** *** 10 * ** ***
请注意,要使用嵌套ifelse语句,您需要将下一个ifelse作为第三个参数(else参数)放在父语句中ifelse.所以你可以尝试以下方法:
ifelse(mydata > 12, "***", ifelse(mydata >= 10, "**", ifelse(mydata >= 8, "*", "NS")))
Run Code Online (Sandbox Code Playgroud)
输出:
A B C
[1,] "NS" "NS" "NS"
[2,] "NS" "NS" "NS"
[3,] "NS" "NS" "NS"
[4,] "NS" "NS" "*"
[5,] "NS" "NS" "*"
[6,] "NS" "*" "**"
[7,] "NS" "*" "**"
[8,] "*" "**" "**"
[9,] "*" "**" "***"
[10,] "**" "**" "***"
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!