如果满足条件,则转到上面的 6 行和 select R 中的值
If condition is met, go 6 rows above and select the value in R
我正在尝试在 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, 40, 40, 41.36, 40.53,
40.1, 40, 40), L_ID = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1)), class = "data.frame", row.names = c(NA,
-20L))
我正在尝试在 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, 40, 40, 41.36, 40.53,
40.1, 40, 40), L_ID = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1)), class = "data.frame", row.names = c(NA,
-20L))