【发布时间】:2014-08-29 08:40:49
【问题描述】:
tick_count 列的单位是 100 毫秒。我想在 date_time 上加上 tick_count 时间。但结果没有正确执行加法。 例如,第二个值应该是“2014-08-15 12:51:02.6 EEST”而不是“2014-08-15 12:51:02.5 EEST”,我不知道为什么会这样。它对我的结果造成了严重影响,因为有时它会导致两三行有相同的时间。 这种情况该如何处理?
>head(status306$date_time)
#[1] "2014-08-15 12:51:01 EEST" "2014-08-15 12:51:01 EEST" "2014-08-15 12:51:01 EEST"
#[4] "2014-08-15 12:51:01 EEST" "2014-08-15 12:51:01 EEST" "2014-08-15 12:51:01 EEST"
> head(status306$tick_count/10)
#[1] 0.0 1.6 1.7 1.1 2.6 2.8
> head(status306$date_time +status306$tick_count/10)
#[1] "2014-08-15 12:51:01.0 EEST" "2014-08-15 12:51:02.5 EEST" "2014-08-15 12:51:02.7 EEST"
#[4] "2014-08-15 12:51:02.0 EEST" "2014-08-15 12:51:03.5 EEST" "2014-08-15 12:51:03.7 EEST"
更新
这是原始数据框,我才知道:p
structure(list(grint = c("C51CCF4CAACGGCC44", "C55CCF4CCCCGGCC44",
"C55CCF4CCCCGGCC44", "C55CCF4CCCCGGCC44", "C55CCF4CCC011CC44",
"C55CCF4CCC011CC44"), dint = c("0000010100001010000000000001110000000001100001000000",
"0000010100001010000000000001110000000001100001000000", "0100010100001010000000000001110000000001100001000000",
"0100010100001011000000000001110000000001100001000000", "0000010100001011000000000001110000000001100001000000",
"0000010100001011000000000000100000000001100001000000"), tick_count = c(0L,
16L, 17L, 11L, 26L, 28L), date_time = structure(c(1408096261,
1408096261, 1408096261, 1408096261, 1408096261, 1408096261), class = c("POSIXct",
"POSIXt"), tzone = ""), detector_signal_levels = c("135,1,163,1,165,5,167,167,5,167,5,163,3,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,",
"135,5,163,1,165,5,167,167,5,167,5,163,3,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,",
"135,5,163,1,165,5,167,167,5,167,5,163,3,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,",
"135,5,163,1,165,5,167,7,5,167,5,163,3,169,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,",
"135,5,163,1,165,5,167,7,9,167,1,163,3,169,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,",
"135,5,163,1,165,5,167,7,9,15,1,163,3,169,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"
)), .Names = c("grint", "dint", "tick_count", "date_time", "detector_signal_levels"
), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
我怀疑原因是您的
$date_time值包括毫秒,因此您没有添加您认为添加的内容。显示的内容不一定与实际值具有相同的精度。$date_time是 POSIX 级别的吗? -
是的,我认为它是 POSIX 类。这很奇怪,但我不认为原因是 $date_time 值包含毫秒,因为实际上对于序列数据,它们是在一个数据包中发送的,date_time 是接收数据包的时间,时间差大约是 $tick_count .
-
@Chenlu 我用你的
dput数据集更新了