Назначить направление на основе значений в другом столбце - PullRequest
1 голос
/ 11 марта 2019

У меня есть этот пример набора данных (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 в той же строке, что и 12, и в любое время sensor изменения с 8 до 12 я бы ввел in в той же строке, что и 12.

Мой желаемый набор данных будет выглядеть так:

enter image description here

Я думаю об использовании dplyr mutate-функции. Но не могу придумать лучший способ сделать это:

df %>% 
  mutate(direction = if_else(...))

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

case_when также сделает работу

df %>%
    mutate(direction = case_when(lag(sensor)==12 & sensor==8 ~ 'out',
                                 lag(sensor)==8 & sensor==12 ~ 'in'))
1 голос
/ 11 марта 2019
with(df1, {
    temp = c(diff(sensor), 0)
    ifelse(temp == -4, "out", ifelse(temp == 4, "in", NA))
})
#[1] NA    NA    "out" "in"  NA    "out" NA   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...