在R中的For循环中嵌套if循环以比较条件

酷尚

我想比较两个条件并分配一个分数。我有两个向量,一个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
  } 
}
三角旗

样本数据

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
#...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章