Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果语句为true,则从另一个变量复制值_R_Variables - Fatal编程技术网

如果语句为true,则从另一个变量复制值

如果语句为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",

我有一个小问题,或者实际上是一个大问题。 我有一个包含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", 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