我有一个带有点集合的数据集(summer2),每个点都分配了一个布尔“使用”值(0表示随机点,1表示使用点)和唯一ID(唯一ID)介于1和747之间。我想创建一个新列,“UniqueID_2”,如果它是一个使用点(使用= 1),我希望它等于UniqueID字段。如果Use = 0,我想在728-747之间分配一个新的随机ID号。
我有一个ifelse函数,其中示例函数嵌套在第三个参数中,当我运行它时,我从348-736得到值,此时每个值应该在728-747之间。
我对R很新,所以我认为这是一个语法错误,或者我只是使用了一个不正确的函数。
summer2["UniqueID_2"]
summer2$UniqueID_2 = ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, 1))
你传递给ifelse
的第三个参数应该是一个与其他两个相同长度的向量,否则回收会启动(当你回收一个随机数时会产生反直觉的结果)。你需要:
ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, length(summer2$Use), replace = TRUE)