我有这个示例数据集(df
):
structure(list(sensor = c(12, 12, 12, 8, 12, 12, 8)), class = "data.frame", row.names = c(NA,
-7L))
我想创建一个名为direction
的新列,其中任何时间sensor
从12变为8,我都将out
输入到{{1} },并且12
从8更改为12的任何时间,我都将sensor
与in
输入同一行。
我想要的数据集如下:
我正在考虑使用12
变异函数。但是无法完全确定这样做的最佳方法:
dplyr
答案 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