当多个条目存在同一时间戳时如何更新时间
how to update time when multiple entries present for same time stamp
我有如下数据:
datetime <- c('2018-01-01 08:00','2018-01-01 08:01:00','2018-01-01 08:02:00', '2018-01-01 08:02:00', '2018-01-01 08:03:00')
from <- c(1,0,1,0,1)
to <- c(0,1,0,1,0)
df <- data.frame(datetime, from, to)
df
datetime from to
1 2018-01-01 08:00 1 0
2 2018-01-01 08:01:00 0 1
3 2018-01-01 08:02:00 1 0
4 2018-01-01 08:02:00 0 1
5 2018-01-01 08:03:00 1 0
有 2 个条目对应于'2018-01-01 08:02:00'。
对于这两个条目,我想分别将时间更新为'2018-01-01 08:02:00'和'2018-01-01 08:02:30'。
一个时间戳对应的条目可能不止两个。
因此 60 秒间隔将除以重复次数,并相应更新时间戳。
更新所有此类条目的时间的最佳方法是什么?
我可以计算每个时间实例的重复次数:
sum(df$datetime == '2018-01-01 08:02:00')
但我不确定如何从那里继续。
我不确定,如果这是执行此操作的最有效方法,我认为这会起作用。
对于每个唯一的 datetime
条目,我们计算它的频率,然后生成一系列 freq
等距条目。
df$datetime[] <- unlist(sapply(unique(df$datetime), function(x) {
freq = sum(x==df$datetime)
as.character(seq(as.POSIXct(x), by = 60/freq, length.out = freq))
}))
df
# datetime from to
#1 2018-01-01 08:00:00 1 0
#2 2018-01-01 08:01:00 0 1
#3 2018-01-01 08:02:00 1 0
#4 2018-01-01 08:02:30 0 1
#5 2018-01-01 08:03:00 1 0
我有如下数据:
datetime <- c('2018-01-01 08:00','2018-01-01 08:01:00','2018-01-01 08:02:00', '2018-01-01 08:02:00', '2018-01-01 08:03:00')
from <- c(1,0,1,0,1)
to <- c(0,1,0,1,0)
df <- data.frame(datetime, from, to)
df
datetime from to
1 2018-01-01 08:00 1 0
2 2018-01-01 08:01:00 0 1
3 2018-01-01 08:02:00 1 0
4 2018-01-01 08:02:00 0 1
5 2018-01-01 08:03:00 1 0
有 2 个条目对应于'2018-01-01 08:02:00'。
对于这两个条目,我想分别将时间更新为'2018-01-01 08:02:00'和'2018-01-01 08:02:30'。
一个时间戳对应的条目可能不止两个。 因此 60 秒间隔将除以重复次数,并相应更新时间戳。
更新所有此类条目的时间的最佳方法是什么?
我可以计算每个时间实例的重复次数:
sum(df$datetime == '2018-01-01 08:02:00')
但我不确定如何从那里继续。
我不确定,如果这是执行此操作的最有效方法,我认为这会起作用。
对于每个唯一的 datetime
条目,我们计算它的频率,然后生成一系列 freq
等距条目。
df$datetime[] <- unlist(sapply(unique(df$datetime), function(x) {
freq = sum(x==df$datetime)
as.character(seq(as.POSIXct(x), by = 60/freq, length.out = freq))
}))
df
# datetime from to
#1 2018-01-01 08:00:00 1 0
#2 2018-01-01 08:01:00 0 1
#3 2018-01-01 08:02:00 1 0
#4 2018-01-01 08:02:30 0 1
#5 2018-01-01 08:03:00 1 0