- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下时间间隔,我想将其分成 10 个等间隔的实例。
head(data) stoptime starttime1 2014-08-19 14:52:04 2014-08-19 15:22:042 2014-08-19 16:27:14 2014-08-19 17:17:333 2014-08-19 18:05:59 2014-08-19 18:09:124 2014-08-19 17:25:35 2014-08-19 17:29:065 2014-08-19 18:23:29 2014-08-19 18:57:346 2014-08-19 07:39:15 2014-08-19 07:48:49
我可以使用此代码获取中点
one_day$midtime = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) /2 , origin = '1970-01-01')
但是,当我尝试将此代码扩展到十个等距实例时,它完全错误。为什么会发生这种情况以及如何修复此代码?
one_day$first = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .1 , origin = '1970-01-01')one_day$second = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .2, origin = '1970-01-01')one_day$thrid = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .3, origin = '1970-01-01')one_day$fourth = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .4, origin = '1970-01-01')one_day$fifth = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .5, origin = '1970-01-01')one_day$sixth = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .6, origin = '1970-01-01')one_day$seventh = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .7, origin = '1970-01-01')one_day$eighth = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .8, origin = '1970-01-01')one_day$ninth = as.POSIXct((as.numeric(one_day$stoptime) + as.numeric(one_day$starttime)) * .9, origin = '1970-01-01')
head(one_day) diff.time stoptime starttime midtime first1 1800 2014-08-19 14:52:04 2014-08-19 15:22:04 2014-08-19 15:07:04 1978-12-05 03:49:242 3019 2014-08-19 16:27:14 2014-08-19 17:17:33 2014-08-19 16:52:23 1978-12-05 04:10:283 193 2014-08-19 18:05:59 2014-08-19 18:09:12 2014-08-19 18:07:35 1978-12-05 04:25:314 211 2014-08-19 17:25:35 2014-08-19 17:29:06 2014-08-19 17:27:20 1978-12-05 04:17:285 2045 2014-08-19 18:23:29 2014-08-19 18:57:34 2014-08-19 18:40:31 1978-12-05 04:32:066 574 2014-08-19 07:39:15 2014-08-19 07:48:49 2014-08-19 07:44:02 1978-12-05 02:20:48 second thrid fourth fifth sixth1 1987-11-08 12:38:49 1996-10-11 21:28:14 2005-09-15 06:17:39 2014-08-19 15:07:04 2023-07-23 23:56:282 1987-11-08 13:20:57 1996-10-11 22:31:26 2005-09-15 07:41:54 2014-08-19 16:52:23 2023-07-24 02:02:523 1987-11-08 13:51:02 1996-10-11 23:16:33 2005-09-15 08:42:04 2014-08-19 18:07:35 2023-07-24 03:33:064 1987-11-08 13:34:56 1996-10-11 22:52:24 2005-09-15 08:09:52 2014-08-19 17:27:20 2023-07-24 02:44:485 1987-11-08 14:04:12 1996-10-11 23:36:18 2005-09-15 09:08:25 2014-08-19 18:40:31 2023-07-24 04:12:376 1987-11-08 09:41:36 1996-10-11 17:02:25 2005-09-15 00:23:13 2014-08-19 07:44:02 2023-07-23 15:04:50 seventh eighth ninth1 2032-06-26 08:45:53 2041-05-30 17:35:18 2050-05-04 02:24:432 2032-06-26 11:13:20 2041-05-30 20:23:49 2050-05-04 05:34:183 2032-06-26 12:58:37 2041-05-30 22:24:08 2050-05-04 07:49:394 2032-06-26 12:02:16 2041-05-30 21:19:44 2050-05-04 06:37:125 2032-06-26 13:44:44 2041-05-30 23:16:50 2050-05-04 08:48:566 2032-06-25 22:25:38 2041-05-30 05:46:27 2050-05-03 13:07:15
dput(data1)structure(list(stoptime = structure(c(1408477924, 1408483634, 1408489559, 1408487135, 1408490609, 1408451955, 1408452727, 1408498708, 1408486644, 1408454996), class = c("POSIXct", "POSIXt"), tzone = "EST"), starttime = structure(c(1408479724, 1408486653, 1408489752, 1408487346, 1408492654, 1408452529, 1408455826, 1408501153, 1408488389, 1408458514), class = c("POSIXct", "POSIXt"), tzone = "EST")), .Names = c("stoptime", "starttime"), row.names = c(NA, 10L), class = "data.frame")
最佳答案
首先,您必须将数据帧的列转换为 POSIXct 或 POSIXlt 类,因为 r 基函数 seq
有一个用于该类对象的方法。
看看这个简化的代码:
library(lubridate)
a <- "2014-08-19 14:52:04"
b <- "2014-08-19 15:22:04"
a <- ymd_hms(a)
b <- ymd_hms(b)
a
[1] "2014-08-19 14:52:04 UTC"
b
[1] "2014-08-19 15:22:04 UTC"
然后您只需使用 seq
函数并将参数 length.out
设置为您要查找的序列的值。代码将自动创建一个从开始到结束均分的值序列。
seq(a, b, length.out = 10)
[1] "2014-08-19 14:52:04 UTC" "2014-08-19 14:55:24 UTC"
[3] "2014-08-19 14:58:44 UTC" "2014-08-19 15:02:04 UTC"
[5] "2014-08-19 15:05:24 UTC" "2014-08-19 15:08:44 UTC"
[7] "2014-08-19 15:12:04 UTC" "2014-08-19 15:15:24 UTC"
[9] "2014-08-19 15:18:44 UTC" "2014-08-19 15:22:04 UTC"
既然您知道如何实现目标,那么只需尝试如何根据值对其进行矢量化即可。
我敢打赌有几种方法,这里是一种。使用 maply
函数,您可以循环遍历元素并将(第一个对象的)第一个元素与(第二个对象的)第一个元素匹配,依此类推。请记住,您必须使用 MoreArg
参数指定哪些参数是固定的。
这是代码:
mapply(seq,
to = data1$starttime,
from = data1$stoptime,
MoreArgs = list(length.out = 10),
SIMPLIFY = F)
这会生成您想要的数据列表,但遗憾的是不是所需的格式:
[[1]]
[1] "2014-08-19 14:52:04 UTC" "2014-08-19 14:55:24 UTC"
[3] "2014-08-19 14:58:44 UTC" "2014-08-19 15:02:04 UTC"
[5] "2014-08-19 15:05:24 UTC" "2014-08-19 15:08:44 UTC"
[7] "2014-08-19 15:12:04 UTC" "2014-08-19 15:15:24 UTC"
[9] "2014-08-19 15:18:44 UTC" "2014-08-19 15:22:04 UTC"
[[2]]
[1] "2014-08-19 16:27:14 UTC" "2014-08-19 16:32:49 UTC"
[3] "2014-08-19 16:38:24 UTC" "2014-08-19 16:44:00 UTC"
[5] "2014-08-19 16:49:35 UTC" "2014-08-19 16:55:11 UTC"
[7] "2014-08-19 17:00:46 UTC" "2014-08-19 17:06:22 UTC"
[9] "2014-08-19 17:11:57 UTC" "2014-08-19 17:17:33 UTC"
[[3]]
[1] "2014-08-19 18:05:59 UTC" "2014-08-19 18:06:20 UTC"
[3] "2014-08-19 18:06:41 UTC" "2014-08-19 18:07:03 UTC"
[5] "2014-08-19 18:07:24 UTC" "2014-08-19 18:07:46 UTC"
[7] "2014-08-19 18:08:07 UTC" "2014-08-19 18:08:29 UTC"
[9] "2014-08-19 18:08:50 UTC" "2014-08-19 18:09:12 UTC"
[[4]]
[1] "2014-08-19 17:25:35 UTC" "2014-08-19 17:25:58 UTC"
[3] "2014-08-19 17:26:21 UTC" "2014-08-19 17:26:45 UTC"
[5] "2014-08-19 17:27:08 UTC" "2014-08-19 17:27:32 UTC"
[7] "2014-08-19 17:27:55 UTC" "2014-08-19 17:28:19 UTC"
[9] "2014-08-19 17:28:42 UTC" "2014-08-19 17:29:06 UTC"
[[5]]
[1] "2014-08-19 18:23:29 UTC" "2014-08-19 18:27:16 UTC"
[3] "2014-08-19 18:31:03 UTC" "2014-08-19 18:34:50 UTC"
[5] "2014-08-19 18:38:37 UTC" "2014-08-19 18:42:25 UTC"
[7] "2014-08-19 18:46:12 UTC" "2014-08-19 18:49:59 UTC"
[9] "2014-08-19 18:53:46 UTC" "2014-08-19 18:57:34 UTC"
[[6]]
[1] "2014-08-19 07:39:15 UTC" "2014-08-19 07:40:18 UTC"
[3] "2014-08-19 07:41:22 UTC" "2014-08-19 07:42:26 UTC"
[5] "2014-08-19 07:43:30 UTC" "2014-08-19 07:44:33 UTC"
[7] "2014-08-19 07:45:37 UTC" "2014-08-19 07:46:41 UTC"
[9] "2014-08-19 07:47:45 UTC" "2014-08-19 07:48:49 UTC"
[[7]]
[1] "2014-08-19 07:52:07 UTC" "2014-08-19 07:57:51 UTC"
[3] "2014-08-19 08:03:35 UTC" "2014-08-19 08:09:20 UTC"
[5] "2014-08-19 08:15:04 UTC" "2014-08-19 08:20:48 UTC"
[7] "2014-08-19 08:26:33 UTC" "2014-08-19 08:32:17 UTC"
[9] "2014-08-19 08:38:01 UTC" "2014-08-19 08:43:46 UTC"
[[8]]
[1] "2014-08-19 20:38:28 UTC" "2014-08-19 20:42:59 UTC"
[3] "2014-08-19 20:47:31 UTC" "2014-08-19 20:52:03 UTC"
[5] "2014-08-19 20:56:34 UTC" "2014-08-19 21:01:06 UTC"
[7] "2014-08-19 21:05:38 UTC" "2014-08-19 21:10:09 UTC"
[9] "2014-08-19 21:14:41 UTC" "2014-08-19 21:19:13 UTC"
[[9]]
[1] "2014-08-19 17:17:24 UTC" "2014-08-19 17:20:37 UTC"
[3] "2014-08-19 17:23:51 UTC" "2014-08-19 17:27:05 UTC"
[5] "2014-08-19 17:30:19 UTC" "2014-08-19 17:33:33 UTC"
[7] "2014-08-19 17:36:47 UTC" "2014-08-19 17:40:01 UTC"
[9] "2014-08-19 17:43:15 UTC" "2014-08-19 17:46:29 UTC"
[[10]]
[1] "2014-08-19 08:29:56 UTC" "2014-08-19 08:36:26 UTC"
[3] "2014-08-19 08:42:57 UTC" "2014-08-19 08:49:28 UTC"
[5] "2014-08-19 08:55:59 UTC" "2014-08-19 09:02:30 UTC"
[7] "2014-08-19 09:09:01 UTC" "2014-08-19 09:15:32 UTC"
[9] "2014-08-19 09:22:03 UTC" "2014-08-19 09:28:34 UTC"
在这一点上,我想这只是相同数据操作的问题,但我(现在)找不到办法。
关于r - 拼接时间间隔 posixct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233543/
我有以下一段 R 代码: formatString = "%Y-%m-%d %H:%M:%OS" x = as.POSIXct(strptime("2013-11-23 23:10:38.000000
我在这里关注了一些有关如何将字符向量转换为日期时间类的问题。我经常看到两种方法,strptime 和 as.POSIXct/as.POSIXlt 方法。我查看了这两个函数,但不清楚它们有什么区别。 s
我很感兴趣,“ct”和“lt”(在 POSIXct 和 POSIXlt 中)的含义。它们是某种缩写吗?例如,“ct”是否表示“日历时间”,“lt”是否表示其他意思? 最佳答案 我自己正在研究这个问题,
考虑以下 POSIXct 日期列表: times <- list(as.POSIXct(c("2012-07-26 00:30", "2012-07-26 6:20",
我有一个类似 Round a POSIX date (POSIXct) with base R functionality 的问题,但我希望总是将日期四舍五入到第二天午夜(00:00:00)。 基本上
我有一个日期,我将其转换为数值,然后想转换回日期。 将日期转换为数字: date1 = as.POSIXct('2017-12-30 15:00:00') date1_num = as.numeric
查看时间格式说明符,我没有看到任何日期选项,例如 2/5/2010 (月/日/年,个位数,无前导空格)。是否有任何内置方法可以转换这种格式的日期? 最佳答案 as.POSIXct('2/5/2010'
我正在尝试解析时间字符串向量并遇到一个奇怪的错误。例如,如果我运行以下代码段,R 会按预期返回结果。 time_format="%m/%d/%Y %H:%M:%S" t_1 = "03/13/2011
我想我一定不明白 POSIXct 是如何工作的,或者什么的。据我了解,这是自纪元以来的几秒钟,纪元是标准时间,例如格林威治标准时间 1970-01-01。 我在 PST 中的 EST 中取了两个 PO
转换为 POSIXct 后,为什么下面的日期会更改为“2014-07-07”? Sys.setenv(TZ='America/Sao_Paulo') d as.POSIXct("2014-07-08
这个问题在这里已经有了答案: converting multiple date formats into one in r (2 个回答) 去年关闭。 嗨,我的数据中有多种日期格式。 如何转换为日期格
在大数据表中工作时,我在日期时间列中发现了不应该存在的 NA 值......所有这些值都应该是“2014-03-30 02:00:00”。 我做了一些试验: > as.POSIXct("2014-03
我在 R 中使用 POSIXct 管理时区时遇到问题。我设置了 TZ全局选项为 "Europe/London"但自从我们切换回格林威治标准时间以来,已经运行 as.POSIXct不再将数字向量转换回正
我正在尝试转换 yearmon日期(来自 zoo 包)到 UTC 时区中的 POSIXct。 这就是我试图做的: > as.POSIXct(as.yearmon("2010-01-01"), tz="
我将日期和时间存储在两列中。第一个的日期为“20180831”。时间存储为从午夜开始的秒数;凌晨 3 点将存储为 10,800。 我需要一个合并的日期时间列,并且在处理一些应该很简单的事情时遇到了困难
我有以下时间间隔,我想将其分成 10 个等间隔的实例。 head(data) stoptime starttime1 2014-08-19 14:52:04
这个问题已经有答案了: How R formats POSIXct with fractional seconds (2 个回答) 已关闭 10 年前。 我不确定这是否只是输出问题,但只是想检查一下。
我正在将 CSV 文件读入变量“stuff”并将第一列强制转换为 POSIXct(该列只有时间戳,格式为“2012-12-04 17:49:52”,因此效果很好). stuff[,1]<-as.POS
我有以下时间间隔,我想将其分成 10 个等间隔的实例。 head(data) stoptime starttime1 2014-08-19 14:52:04
我下载了一些气候再分析数据,花了很多时间从 grib 转换为 cdf,最后现在我成功地使其在 R 中工作。我遇到的下一个问题是时间是一个字符向量,类似于以下内容: tt =c( "200901
我是一名优秀的程序员,十分优秀!