【发布时间】:2018-06-05 23:43:00
【问题描述】:
我有与here 发布的相同的问题,但问题仍未得到解答,我也遇到了同样的问题。
我附上了我的数据样本here。
我使用的R版本是3.4.2,dplyr版本是0.7.4。
为了让每个人都能快速... 导入数据后,我进行以下编辑:
#specify which species are predators (pp = 1) and prey (pp = 0)
d1 = d1 %>%
group_by(sps) %>% #grouped by species
mutate(pp=ifelse(sps %in% c("MUXX", "MUVI","MEME"), 1,0)) #mutate to specify predators as 1 and prey as 0
d1$datetime=strftime(paste(d1$date,d1$time),'%Y-%m-%d %H:%M',usetz=FALSE) #converting the date/time into a new format
head(d1) #visualize the first few lines of the data
d2 = d1 %>% filter(km %in% c("80")) #restricting the observations to just one location (km 80)
现在是问题出现的地方(NA):
d2 = d2 %>% mutate(prev = dplyr::lag(pp))
#when I look at the output I see the lag function isn't working (shown below)
> d2
# A tibble: 209 x 10
# Groups: sps [10]
ID date km culv.id type sps time pp datetime prev
<int> <fctr> <dbl> <fctr> <fctr> <fctr> <fctr> <dbl> <chr> <dbl>
1 1 2012-06-19 80 A DCC MICRO 2:19 0 2012-06-19 02:19 NA
2 2 2012-06-21 80 A DCC MUXX 23:23 1 2012-06-21 23:23 NA
3 3 2012-07-15 80 A DCC MAMO 11:38 0 2012-07-15 11:38 NA
4 4 2012-07-20 80 A DCC MICRO 22:19 0 2012-07-20 22:19 0
5 5 2012-07-29 80 A DCC MICRO 23:03 0 2012-07-29 23:03 0
6 8 2012-08-07 80 A DCC PRLO 2:04 0 2012-08-07 02:04 NA
7 9 2012-08-08 80 A DCC MICRO 23:56 0 2012-08-08 23:56 0
8 10 2012-08-09 80 A DCC PRLO 23:06 0 2012-08-09 23:06 0
9 11 2012-08-13 80 A DCC MICRO 0:04 0 2012-08-13 00:04 0
10 12 2012-08-13 80 A DCC MICRO 0:46 0 2012-08-13 00:46 0
可能有人对为什么滞后功能不起作用有任何建议吗?
【问题讨论】:
-
d2 <- d2 %>% ungroup() %>% mutate(prev = dplyr::lag(pp)) -
@Mako212 这立即解决了我的问题!谢谢!!!如果可能的话,您能否向我解释一下您注意到我的输出中发生了什么,以便在再次出现这个问题时我可以自己解决这个问题?
-
添加了我的评论作为更详细的答案。
-
对 NA 的实际情况做了最后的说明,您可能实际上不想
ungroup()因为lag()在分组数据帧上正常工作,如果您希望按组获得滞后值.
标签: r datetime dplyr time-series