当前位置:  开发笔记 > 编程语言 > 正文

R-基于对其他行中的值的引用的条件计算

如何解决《R-基于对其他行中的值的引用的条件计算》经验,为你挑选了1个好方法。

我想在另一行的同一列中引用一个值.我有一栏有开始和停止时刻.我想添加一个列,指示机器是否正在运行.

这是数据的样子:

c("", "", "start", "", "", "stop", "", "", "start", "stop", "")

输出应如下所示:

 [1,] ""      ""       
 [2,] ""      ""       
 [3,] "start" "running"
 [4,] ""      "running"
 [5,] ""      "running"
 [6,] "stop"  "running"
 [7,] ""      ""       
 [8,] ""      ""       
 [9,] "start" "running"
[10,] "stop"  "running"
[11,] ""      ""      

在第二栏中我想做:

如果同一行第一列等于开始 - >运行

如果前一行第一列等于停止 - >""

ELSE与第二列的前一行的值相同

我怎么能用R优雅地做到这一点?

非常感谢您提前输入!



1> Cath..:

您可以使用cumsum检查更多"开始"值而不是"停止"值来了解进程是否正在运行:

res <- cbind(myvec, c("", "running")[(cumsum(myvec=="start") > cumsum(myvec=="stop")) + 1])

之后可以为"停止"的行添加"运行":

res[res[, 1]=="stop", 2] <- "running"

res
#      myvec            
# [1,] ""      ""       
# [2,] ""      ""       
# [3,] "start" "running"
# [4,] ""      "running"
# [5,] ""      "running"
# [6,] "stop"  "running"
# [7,] ""      ""       
# [8,] ""      ""       
# [9,] "start" "running"
#[10,] "stop"  "running"
#[11,] ""      "" 

数据

myvec <- c("", "", "start", "", "", "stop", "", "", "start", "stop", "")

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有