【问题标题】:If condition is met, go 6 rows above and select the value in R如果满足条件,则往上走 6 行并选择 R 中的值
【发布时间】:2021-01-04 19:31:14
【问题描述】:

我正在尝试在 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

有什么想法吗?

【问题讨论】:

  • Anna,请提供示例数据和预期输出鉴于该数据

标签: r if-statement goto


【解决方案1】:

这样的事情怎么样?

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))

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多