我想在另一行的同一列中引用一个值.我有一栏有开始和停止时刻.我想添加一个列,指示机器是否正在运行.
这是数据的样子:
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优雅地做到这一点?
非常感谢您提前输入!
您可以使用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", "")