如何按条件将残差小于0的对应数据值设置为0
R生成残差分组标识变量解决方案
问题原因
你直接对残差做逻辑判断时,R默认返回布尔型结果(TRUE/FALSE),所以会输出FALSE而非你需要的数值0。R中布尔值本身和数值是互通的:TRUE对应数值1,FALSE对应数值0,只要做一次类型转换或者显式赋值即可。
实现代码
假设你的残差变量名为resid,以下两种写法都可以生成符合要求的Unscrambled.Selection.Sequence变量:
- 写法1:逻辑判断转整数(代码最简洁)
# 残差>0返回1,残差<=0返回0 Unscrambled.Selection.Sequence <- as.integer(resid > 0) # 若需要排除残差=0的样本,先过滤再生成标识 valid_data <- subset(原数据集, resid != 0) Unscrambled.Selection.Sequence <- as.integer(valid_data$resid > 0)
- 写法2:ifelse显式赋值(规则更清晰)
# 残差>0赋值1,否则赋值0 Unscrambled.Selection.Sequence <- ifelse(resid > 0, 1, 0) # 排除残差=0的版本:残差>0为1,<0为0,=0为NA Unscrambled.Selection.Sequence <- ifelse(resid > 0, 1, ifelse(resid < 0, 0, NA))
验证输出
运行以下代码即可查看前30条结果,格式和你给出的示例一致:
head(Unscrambled.Selection.Sequence, 30)
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

