r-字符列上的滞后函数



我想将zone列中的所有值下移一,然后比较zone和新zone_shift列的不同之处,以了解动物何时从一个区域过渡到另一个区域。然而,我已经被困在了第一步。。。

这是我的df:的一部分

time  zone
0.00  social
2.036 social
2.100 social
2.196 interzone
3.436 nest
2.468 nest
2.676 nest
2.708 nest
2.868 nest
3.204 nest
3.300 interzone

我使用了以下功能:

df %>% 
mutate(zone_shift = dplyr::lag(zone, n = 1, default = NA_character_)) 

然而,我得到的结果是:

time  zone         zone_shift
0.00  social       NA
2.036 social       social
2.100 social       social
2.196 interzone    NA
3.436 nest         NA
2.468 nest         nest
2.676 nest         nest
2.708 nest         nest
2.868 nest         nest
3.204 nest         nest
3.300 interzone    interzone

对于df的其余部分,列中的任何值都没有实际移位——zone和zone_shift列完全相同,有时会在应该发生移位的地方引入NA。

如果有任何帮助,我将不胜感激!非常感谢。

没有滞后函数,但我认为这很有效:

df$zone_shift <- c(NA, df$zone[-length(df$zone)])
df$match <- df$zone == df$zone_shift 

下面将为您提供两列,其中时间和区域变量保持不变,而后者下移一个。

df2<-df %>%
mutate(time=time,zone=lag(zone)) %>%
na.omit()

最新更新