下面是一个虚构的可复制的四辆出租车上落次数的例子. 不幸的是,出租车1、2和3在时间的流逝中丢失了.幸运的是,其中两次(对于出租车1号和3号)可以推断至少在1秒后他们才会接到新客户(这些是非拼车出租车,非常防电晕):

(在实际使用 case 中,下面的DF是GROUP_BY和另一个DF的摘要的结果)

library(dplyr)

x <- seq(as.POSIXct('2020/01/01'),  # Create sequence of dates
         as.POSIXct('2030/01/01'),
         by = "10 mins") %>% 
  head(20) %>%
  sort()

taxi_nr <- c(1, 1, 1, 2, 2, 3, 3, 3, 3, 4)

drop_of <- x[c(TRUE, FALSE)]
pick_up <- x[c(FALSE, TRUE)]

drop_of[2] <- NA
drop_of[5] <- NA
drop_of[7] <- NA

df <- data.frame(taxi_nr,pick_up,drop_of) %>%
  arrange(pick_up)

我希望填写出租车1号和3号的NA,我try 过以下几种方式:

df <- df %>%
   fill(drop_of, .direction = "up")

然而,这采用下面的落差值而不是下面的拾取值,并且不考虑出租车nr.

我也想过:

df <- df %>%
  filter(is.na(drop_of)) %>%
  mutate(drop_of, ov[,+1])

这似乎遇到了出租车_nr 2 case 的问题,因为在该组中没有[,+1]-或者我认为这就是问题所在.我试图安全地添加(),可能是(),也可能是悄悄地添加(),但这无济于事:

df <- df %>%
  filter(is.na(drop_of)) %>%
  mutate(drop_of, purr::safely(ov[,+1]))

有谁有解决方案吗?

PS:一旦我得到了正确的填充栏,也需要减go 1秒,并使用正确的润滑油甲酸盐(d/m/y-h/m/s)

谢谢!

推荐答案

您可以try 对其使用临时变量,尽管它看起来并不美观

df <- df %>%
  mutate(temp = ifelse(is.na(drop_of), NA, pick_up)) %>% 
  group_by(taxi_nr) %>% 
  fill(temp, .direction = "up") %>% 
  ungroup() %>% 
  mutate(drop_of = ifelse(is.na(drop_of), temp - 1, drop_of),
         drop_of = as.POSIXct(drop_of, origin = "1970-01-01")) %>% 
  select(-temp)

如果您需要d/m/y-h/m/s格式的数据,您可以使用format()函数来实现(我不确定您所描述的是否是您所需要的,但至少您应该明白了)

df <- df %>% mutate(drop_of = format(drop_of, "%d/%m/%Y-%H/%M/%S"))

R相关问答推荐

如何删除多个.CSV文件的行

基于多列将值链接到NA

在某些栏和某些条件下,替换dfs列表中的NA

在GGPLATE中将突出的点放在前面

当我们有多个特殊字符时,使用gsub删除名称和代码'

在另存为PNG之前隐藏htmlwidget绘图元素

如何在分组条形图中移动相关列?

在RStudio中堆叠条形图和折线图

按多列统计频次

用多边形替换地块点

Conditional documentr::R中数据帧的summarize()

自定义交互作用图的标签

如何在Quarto中使用美人鱼图表中的标记来加粗文本

R-找出存在其他变量的各种大小的所有组合

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

随机生成样本,同时在R内的随机样本中至少包含一次所有值

创建由三个单独的shapefile组成的单个 map

如何根据顺序/序列从数据框中排除值

如何在分组蜂群小区中正确定位标签

按顺序将地块添加到列表