如果语句为true,则从另一个变量复制值
我有一个小问题,或者实际上是一个大问题。 我有一个包含3个变量的数据集,我使用atm,让我们称它们为var1、var2和var3。 我总共有3000多个观测值,每个变量都有NA值 var1=年龄1,var2=是/否,var3=年龄2 我要做的是,如果var2=“Yes”,那么var1中的值应该被合并到var3中。 我是这样做的:如果语句为true,则从另一个变量复制值,r,variables,R,Variables,我有一个小问题,或者实际上是一个大问题。 我有一个包含3个变量的数据集,我使用atm,让我们称它们为var1、var2和var3。 我总共有3000多个观测值,每个变量都有NA值 var1=年龄1,var2=是/否,var3=年龄2 我要做的是,如果var2=“Yes”,那么var1中的值应该被合并到var3中。 我是这样做的: var3[var2=="Yes"]<-var1 var3[var2==“Yes”]您可以试试 var3 <- ifelse(var2 == "Yes",
var3[var2=="Yes"]<-var1
var3[var2==“Yes”]您可以试试
var3 <- ifelse(var2 == "Yes", var1, var3)
var3你可以试试
var3 <- ifelse(var2 == "Yes", var1, var3)
var3错误听起来像是在var2
中有NA
值。您可以测试sum(is.na(var))>0
,因此如果缺少值,R不想猜测缺少值是否与“是”或“否”相同,因此您会得到错误
此外,通过只对赋值的一侧进行索引,您不必跨行匹配值。因此,即使在修正NA值时,您也可能会得到要替换的项数不是替换长度的倍数
一个技巧是使用which
删除逻辑索引中的NA
值,并将其转换为数字索引。一旦知道要替换的行,就可以在赋值的两侧使用相同的索引
idx <- which(var2=="Yes")
var3[idx] <- var1[idx]
该错误听起来像是在var2
中有NA
值。您可以测试sum(is.na(var))>0
,因此如果缺少值,R不想猜测缺少值是否与“是”或“否”相同,因此您会得到错误
此外,通过只对赋值的一侧进行索引,您不必跨行匹配值。因此,即使在修正NA值时,您也可能会得到要替换的项数不是替换长度的倍数
一个技巧是使用which
删除逻辑索引中的NA
值,并将其转换为数字索引。一旦知道要替换的行,就可以在赋值的两侧使用相同的索引
idx <- which(var2=="Yes")
var3[idx] <- var1[idx]
var3 var3