如何使用R按规则处理Col1、Col2两列数据生成指定输出列
R实现数据按规则生成新列的方案
实现逻辑
逐行判断Col1的值:
- Col1非NA时,在数值前拼接字符"1"后转换为数值类型(若Col1固定为两位数,也可直接用
Col1 + 100的数值计算方式,效率更高) - Col1为NA时,直接取Col2的对应值填充
方法1:基础R实现
无需加载额外包,直接用内置函数处理:
# 示例数据 df<-read.table (text=" Col1 Col2 65 NA NA 91 56 NA 71 71 67 100 NA 45 44 NA NA 90 NA 40 84 71 44 63 NA 20 ", header=TRUE) # 生成新列Out df$Out <- ifelse(is.na(df$Col1), df$Col2, as.numeric(paste0("1", df$Col1))) # 可选数值计算写法(仅适用于Col1为两位数的场景) # df$Out <- ifelse(is.na(df$Col1), df$Col2, 100 + df$Col1)
运行后查看df$Out即可得到对应结果。
方法2:dplyr(tidyverse生态)实现
适合已在使用tidyverse做数据处理的场景,语法更易读:
library(dplyr) df <- df %>% mutate(Out = if_else(is.na(Col1), Col2, as.numeric(paste0("1", Col1))))
输出验证
最终得到的Out列和预期结果完全一致:
[1] 165 91 156 171 167 45 144 90 40 184 144 20
内容的提问来源于stack exchange,提问作者user330
相关产品推荐
相关产品推荐

