我正在一个项目中,如果我想将当前值与上一个值进行比较,如果为true,则返回输出1,如果为false,则返回输出0。
我尝试了
brv_trx1$'first' <- ifelse(brv_trx1$`Total TRx` != lag(brv_trx1$`Total TRx`),1,0)
此代码无法正常工作。
x= c(1,2,2,2,3,4,5,5,5,5,6,7)
我想要类似以下的输出:
x y
1 1
2 1
2 0
2 0
3 1
4 1
5 1
5 0
5 0
此步骤完成后,我就有一个十分位函数
brv_trx1$decvar <- ifelse(brv_trx1$cum != 0 & brv_trx1$first == 1, (11 - ceiling(round((brv_trx1$cum/total) * 10, 4))),
ifelse(brv_trx1$cum != 0 & brv_trx1$first == 0 , lag(brv_trx1$decvar), 0))
对于此功能,我得到了很多NA。
预期输出为:
Y 12月
1 10
1 10
1 9
0 9
0 9
1 8
0 8
1 8
1 8
答案 0 :(得分:0)
您可以使用索引。在这里,我制作了1-9和2-10的向量。然后,通过使用“ shifted 1”索引比较原始向量的元素(1等于2,2等于3,依此类推)。
.ui-accordion-content-wrapper-overflown {
overflow: hidden;
}
答案 1 :(得分:0)
由于lag()将为第一个条目生成NA,请考虑以下因素:
x= c(1,2,2,2,3,4,5,5,5,5,6,7)
x <- as.data.frame(x=x)
x$y <- ifelse( (x$x==lag(x$x)) %in% c(NA, FALSE), 1, 0)
如果x == lag(x)的比较结果为FALSE或NA(因为这是对滞后的第一次比较),则标记1,否则按照上面的示例标记0。
答案 2 :(得分:0)
使用data must have same number of columns to bind by row
diff