如果满足条件,则转到上面的 6 行并选择 R 中的值

问题描述

data sample

我正在尝试在 R 中执行以下操作:在我的数据集(md2,附加)中,如果 L_ID=1,则转到上方 6 行并使用变量 Hway 创建一个新数据框。我使用以下命令:

spc <- data.frame(md$Hdwy[c(md2$L_ID[-6],0) == 1])

期待看到:

> spc
44.46 40.00

它似乎有效,但是当我检查时我注意到它选择了上面的 1 行而不是 6 行:

> spc
    40.1 40.00

有什么想法吗?

解决方法

这样的事情怎么样?

library(dplyr)
spc <- md2 %>%
         mutate(Lag = lag(Hdwy,6L)) %>%
         filter(L_ID==1) %>%
         pull(Lag)
spc
[1] 44.46 40.00

或者使用基础 R:

spc <- md2$Hdwy[which(md2$L_ID == 1) - 6]
spc
[1] 44.46 40.00

样本数据:

md2 <- structure(list(Hdwy = c(45.01,45.03,449,44.46,43.63,425,41.36,40.53,40.1,39.97,39.98,40,40),L_ID = c(0,1,1)),class = "data.frame",row.names = c(NA,-20L))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...