我有 3 列Flag, Score, Stage。
Flag 的值将是 1 或 0,Score 将是任何大于 0 的值。我们需要计算 stage 值。
所以我们的数据 (stagedata) 将如下所示:
Flag Score Stage
1 35
1 0
0 12
....
IF Flag == 1 and score >= 30, 我们计算阶段为2,
如果 Flag ==0 或 Flag == 1 并且 score < 30,stage = 1。
任何其他案例阶段都将计算为 0(即,由于输入中的某些错误或如果分数或标志丢失)。
stagedata$Stage <- ifelse(stagedata$Flag==1,ifelse((stagedata$Score>=30),2,1),ifelse(stagedata$Flag==0,1,0))
stagedata$Stage[is.na(stagedata$Stage)] <-0
有没有更有效的方法来使用任何其他功能(如应用)来做到这一点?我们正在处理的数据是一万个数量级
我们可以通过一些算术运算将逻辑向量转换为整数
v1 <- with(stagedata, 2 *(Flag == 1 & score >= 30) + (Flag %in% 0:1 & score <30))
v1
#[1] 2 1 1 2 1 0
如果有 NA 值,则将其替换为 0
v1[is.na(v1)] <- 0
stagedata <- data.frame(Flag = c(1, 1, 0, 1, 0, 2), score = c(35, 0, 12, 31, 27, 31))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句