对于一个简单的数据框:
df <- structure(list(id = 1:9, sex = structure(c(2L, 2L, 1L, 2L, 1L,
1L, 2L, 2L, 1L), .Label = c("f", "m"), class = "factor"), score = c(55L,
60L, 62L, 47L, 45L, 52L, 41L, 46L, 57L)), .Names = c("id", "sex",
"score"), class = "data.frame", row.names = c(NA, -9L))
我想根据男女得分写一些if陈述。基本的if函数将如下所示:
df$score3<-ifelse(df$score <45,"low",
ifelse(df$score>=45 & df$score<55,"normal",
ifelse(df$score >=55,"high", NA)))
我将如何仅针对男性更改此表达式(女性将使用单独的截止值(例如,低= <50,正常=> = 50&<58,高=> = 58))。
如果可以就基于数据帧中另一列的if语句提供任何建议,我将不胜感激。
使用数据结构来表示您的条件
criteria<-list(m=c(0,50,58),f=c(0,45,55))
labels<-c("low","normal","high")
grade<-function(score,sex) labels[findInterval(score,criteria[[sex]])]
df$grade<-mapply(grade,df$score,as.character(df$sex))
id性别分数等级 1 1 m 55正常 2 2 m 60高度 3 3 f 62高 4 4 m 47低 5 5 f 45正常 6 6 f 52正常 7 7 m 41低 8 8 m 46低 9 9 f 57高
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句