【问题标题】:Create conditional sequence in dataframe in R在 R 中的数据框中创建条件序列
【发布时间】:2019-03-04 16:59:42
【问题描述】:

希望用条件序列填充矩阵。数据中有多个中断,但必须维护这些中断/空格。

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

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 循环等,但似乎无法正常工作。任何帮助/指针将不胜感激。

【问题讨论】:

    标签: r matrix seq


    【解决方案1】:

    也许以下两步解决方案就是你想要的。

    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
    

    【讨论】:

    • 我觉得你也可以try[,2][try[,1] ==1] &lt;- seq(sum(try[,1] == 1))
    • 完美运行。正是我的目标。我选择了单线。工作非常快!谢谢@Rui Barradas
    【解决方案2】:

    try 视为您的数据(第一列),您可以这样做:

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

    【讨论】:

    • 对,对不起,我误解了右括号的位置。我在最后放错了位置。
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多