如何在R语言中合并含NA的二元变量生成新变量
在R中合并二元变量为新变量的简洁方法
首先需要注意,你示例数据中的V2和V3列是字符类型,第一步要先转为数值型才能进行逻辑运算:
# 加载示例数据 a <- c("A", NA, 0) b <- c("B",0, 1) c <- c("C", 0, 0) d <- c("D", 0, 1) e <- c("E", NA, NA) aa<- rbind(a,b,c,d,e) aa <- as.data.frame(aa) # 将V2、V3转为数值型 aa$V2 <- as.numeric(aa$V2) aa$V3 <- as.numeric(aa$V3)
你的需求本质上是对两个二元变量做异或(XOR)运算:只有当两个变量取值不同时(一个1一个0)结果为1,取值相同时(都0)结果为0,且只要任一变量为NA,结果就保留NA。R中的xor()函数正好符合这个逻辑,直接用它生成新列即可:
# 生成新变量V4 aa$V4 <- as.integer(xor(aa$V2 == 1, aa$V3 == 1))
运行后查看结果:
> aa V1 V2 V3 V4 a A NA 0 NA b B 0 1 1 c C 0 0 0 d D 0 1 1 e E NA NA NA
完全符合你期望的结果。
内容的提问来源于stack exchange,提问作者DW1310
相关产品推荐
相关产品推荐

