Вложенные циклы if в For Loop в R для сравнения условий - PullRequest
0 голосов
/ 01 декабря 2018

Я хотел сравнить два условия и назначить оценку;У меня есть два вектора один A с некоторыми значениями & B является меткой времени.Все, что я хотел сделать, это, если, скажем, значение в A больше, чем порог, а разница во временных метках с предыдущей больше, чем 1, я должен назначить оценку для C .. У меня проблемы с выполнением следующего кода.

for(i in 2:length(test$B)) {
  if(test$A>15 & (test$B[i]-test$B[i-1])<=4) {
    test$C<-3 
  } else if(test$A<15 & (test$B[i]-test$B[i-1]==1)) {
    test$C<-2 
  } else {
    test$C<-1
  } 
}

1 Ответ

0 голосов
/ 01 декабря 2018

Пример данных

set.seed(123)
df <- data.frame( A = sample( 10:20, 100, replace = TRUE ),
                  B = sample( 1:11, 100, replace = TRUE ),
                  stringsAsFactors = FALSE )

код - tidyverse / dplyr

library( dplyr )                  

df %>% mutate( C = case_when(
  A > 15 & B - lag( B ) <= 4 ~ 3,
  A < 15 & B - lag( B ) == 1 ~ 2,
  TRUE ~ 1 ) )

#      A  B C
# 1   12  2 1
# 2   13  8 1
# 3   12 11 1
# 4   11  3 1
# 5   19  6 3
# 6   17  9 3
# 7   20  7 3
# 8   16  9 3
# 9   14  4 1
# 10  20  5 3
# 11  20  3 3
# 12  14  4 2
#...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...