我想比较两个条件并分配一个分数;我有两个向量,一个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
}
}
答案 0 :(得分:0)
样本数据
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
#...