我的资料:
ID B
1 1
2 1
3 -1
4 -1
5 -1
6 1
7 1
我想创建一个列C,当列B的值为1时,该值循环通过c(1.0,1.5,2.0,2.5),而当列B的值为1时循环通过c(-1.0,-1.5,-2.0,-2.5) B列的值为-1。每次B列的值更改时,这些值应重置。
结果如下所示:
ID B C
1 1 1.0
2 1 1.5
3 -1 -1.0
4 -1 -1.5
5 -1 -2.0
6 1 1.0
7 1 1.5
8 1 2.0
我尝试使用一个较旧的问题作为参考,该问题是我根据B列中的重复日期在C列中发布了分配值,但我无法使其起作用。
这是带有的基本R单线ave
。
df1$C <- ave(df1$B, cumsum(c(0, diff(df1$B)) != 0), FUN = function(x) x*seq(1, by = 0.5, length.out = length(x)))
df1
# ID B C
#1 1 1 1.0
#2 2 1 1.5
#3 3 -1 -1.0
#4 4 -1 -1.5
#5 5 -1 -2.0
#6 6 1 1.0
#7 7 1 1.5
数据
df1 <- read.table(text = "
ID B
1 1
2 1
3 -1
4 -1
5 -1
6 1
7 1
", header = TRUE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句