根据另一列中的值分配方向

时间:2019-03-11 20:19:12

标签: r dplyr

我有这个示例数据集(df):

structure(list(sensor = c(12, 12, 12, 8, 12, 12, 8)), class = "data.frame", row.names = c(NA, 
-7L))

enter image description here

我想创建一个名为direction的新列,其中任何时间sensor从12变为8,我都将out输入到{{1} },并且12从8更改为12的任何时间,我都将sensorin输入同一行。

我想要的数据集如下:

enter image description here

我正在考虑使用12变异函数。但是无法完全确定这样做的最佳方法:

dplyr

2 个答案:

答案 0 :(得分:2)

case_when也可以做

df %>%
    mutate(direction = case_when(lag(sensor)==12 & sensor==8 ~ 'out',
                                 lag(sensor)==8 & sensor==12 ~ 'in'))

答案 1 :(得分:1)

with(df1, {
    temp = c(diff(sensor), 0)
    ifelse(temp == -4, "out", ifelse(temp == 4, "in", NA))
})
#[1] NA    NA    "out" "in"  NA    "out" NA