在R中的数据框中创建条件序列

时间:2019-03-04 16:59:42

标签: r matrix seq

试图用条件序列填充矩阵。数据中有多个中断,但是必须保留这些中断/空间。

这是我要完成的工作的示例矩阵。第一列是原始数据。第二列是我要创建的内容。

try <- matrix(c(rep(0,4),rep(1,3),rep(0,2),rep(1,2), rep(0,4), seq(1,3,1), rep(0,2), seq(4,5,1)),ncol=2)

我尝试使用seq_long,while循环等,但似乎无法正常工作。任何帮助/指针将不胜感激。

2 个答案:

答案 0 :(得分:2)

可以考虑将try作为数据(第一列):

try$second_column <- cumsum(try[,1])*try[,1]

答案 1 :(得分:2)

也许下面两个步骤是您想要的解决方案。

try[, 2] <- ave(try[, 1], try[, 1], FUN = seq_along)
try[try[, 1] == 0, 2] <- 0

try[, 2]
#[1] 0 0 0 0 1 2 3 0 0 4 5

单线是

ave(try[, 1], try[, 1], FUN = function(x) if(any(x == 0)) x else seq_along(x))
#[1] 0 0 0 0 1 2 3 0 0 4 5