当varNA列取值为1时,如何将数据框其余列转换为NA?
R语言实现:当varNA为1时将指定列设为NA
需求说明
基于给定的数据框,当varNA列取值为1时,将该行的var1、var2、var3列转换为NA,最终输出移除id列后的结果。
原始数据创建
id <- 1:3 varNA <- c(1,1,0) var1 <- c(0,0,1) var2 <- c(0,0,0) var3 <- c(0,0,1) mydata <- data.frame(id, varNA, var1, var2, var3)
解决方案
方法1:基础R原生实现
直接通过索引筛选目标行和列,赋值为NA:
# 对varNA为1的行,将var1/var2/var3设为NA mydata[mydata$varNA == 1, c("var1", "var2", "var3")] <- NA # 移除id列,查看结果 mydata[, -1]
方法2:tidyverse(dplyr)实现
适合习惯tidyverse语法的用户,批量处理指定列:
library(dplyr) mydata_processed <- mydata %>% # 批量处理var1/var2/var3,满足条件则设为NA mutate(across(c(var1, var2, var3), ~ifelse(varNA == 1, NA, .x))) %>% # 移除id列 select(-id) # 查看结果 mydata_processed
最终输出结果
varNA var1 var2 var3 <dbl> <dbl> <dbl> <dbl> 1 1 NA NA NA 2 1 NA NA NA 3 0 1 0 1
内容的提问来源于stack exchange,提问作者Seydou GORO
相关产品推荐
相关产品推荐

