R语言如何基于两列条件为dataframe创建新列
R实现方法
首先先对数据做预处理,将列v1_2中的.转为数值型缺失值,再通过条件判断生成新列即可,提供两种常用实现方式:
步骤1:构造示例数据(你可以跳过这步直接用你自己的数据集)
df <- data.frame( id = 1:5, v1 = c(4,5,9,9,2), v1_2 = c(".", ".", "7", "6", ".") ) # 预处理:把v1_2的点转换为数值类型,非数字的点会自动识别为缺失值NA df$v1_2 <- as.numeric(df$v1_2)
方法1:Base R原生实现
用基础函数ifelse做向量化条件判断,一行代码完成:
df$final <- ifelse(df$v1 != 9, df$v1, df$v1_2)
方法2:tidyverse/dplyr风格实现
适合习惯用管道函数的场景:
library(dplyr) df <- df %>% mutate(final = if_else(v1 != 9, v1, v1_2))
运行后得到的结果和你预期完全一致:
> df id v1 v1_2 final 1 1 4 NA 4 2 2 5 NA 5 3 3 9 7 7 4 4 9 6 6 5 5 2 NA 2
内容的提问来源于stack exchange,提问作者EGM8686
相关产品推荐
相关产品推荐

