R语言如何按条件引用另一变量取值创建新变量basic_adj
原有代码问题说明
ifelse的满足条件分支你设置的是固定字符串"1",而非需求要求的employment_adj列对应取值- 额外调用的
factor()会将结果转为因子类型,不符合存储数值的需求
基础R实现
indcode <- c(2401, 3090, 5200) employment_adj <- c(29.2,31.2,12.4) df <- data.frame(indcode, employment_adj) # 生成新变量basic_adj df$basic_adj <- ifelse( test = df$indcode >= 2400 & df$indcode < 3100, yes = df$employment_adj, no = NA )
运行后得到的结果和你给出的示例完全匹配:
| indcode | employment_adj | basic_adj |
|---|---|---|
| 2401 | 29.2 | 29.2 |
| 3090 | 31.2 | 31.2 |
| 5200 | 12.4 | NA |
NA在导出为CSV、Excel等格式时会自动显示为空单元格,符合你要的留空要求。
dplyr实现(tidyverse生态常用写法)
如果你习惯用dplyr处理数据,可以用mutate+if_else的写法:
library(dplyr) df <- df %>% mutate( basic_adj = if_else( condition = indcode >= 2400 & indcode < 3100, true = employment_adj, false = NA_real_ ) )
这里用NA_real_是为了和employment_adj的数值类型匹配,避免if_else的类型校验报错。
内容的提问来源于stack exchange,提问作者rfl026
相关产品推荐
相关产品推荐

