我尝试根据第三个变量的条件,使用另一个变量的值一次覆盖多个变量(一种日历中的几个月)。如果条件为假,则不会发生任何事情。
我认为If函数会有用,因为可以省略else而不是no,它对向量不起作用。
DF1[,3:4] <- if (DF1$v7==5) {DFDF1$v5}
the condition has length > 1 and only the first element will be used
另一方面,适合矢量是ifelse,但它告诉我
DF1[,3:4] <- ifelse (DF1$v7==5, DF1$v5, )
"argument "no" is missing, with no default",
那么我应该怎么做才能实现我的目标呢?
感谢任何建议,初学者和我一样感激不尽!
PS:变量就是例子。
编辑:我正在寻找一种方法,我可以在DF1 [,3:4]中解决应该被列号替换的变量,否则我将不得不输入到12个不同的变量名(在我原来的DF中)。
答案 0 :(得分:4)
一列接一列。关于else条件,只需使用原始值
for (i in 3:4){
DF[,i] <- ifelse(DF$v7 == 5, DF1$v5, DF[,i])
}
答案 1 :(得分:0)
我可以想到它可能有用的一种方式:
DF1[DF1$v7==5,3:4] <-cbind( DF1$v5,DF1$v5 )[DF1$v7==5, ]
作业双方的项目数量应匹配。测试。当DF1 $ v5是一个因子但按预期执行时,它传递整数值。也可以这样做:
DF1[DF1$v7==5,3:4] <- DF1[ , c('v5','v5')][DF1$v7==5, ]