【问题标题】:How do I index through a split string contained in a vector?如何通过向量中包含的拆分字符串进行索引?
【发布时间】:2017-12-04 17:49:06
【问题描述】:

我有一段代码,我们假设它是

x <- c("10/05/1997 00:00:00", "11/05/1997 00:00:00", "12/05/1997 00:00:00")  
x <- strsplit(as.character(x), " ", fixed=TRUE)[1]

我遇到的问题是:我想获取拆分字符串的第一个索引(“10/05/1997”),同时丢弃拆分字符串的第二个索引(“00:00:00” )。但是,我不是通过拆分字符串进行索引,而是告诉 R 只对 x 的第一个索引执行此操作。我本来以为为了只在 x 的第一个索引上执行此操作,我的代码必须如下所示:

x <- strsplit(as.character(x)[1], " ", fixed=TRUE)[1]

有没有办法只为向量中的每个索引提取拆分字符串的第一个元素?

谢谢大家的帮助。我是一个 R 新手。我找不到任何类似的问题。

【问题讨论】:

  • 你在找这个吗? lapply(x,function(y) y[1])。此外,如果目标是获取mm/dd/yyyy 格式的日期,P Lapointe 的解决方案可能是最好的
  • 目前的目标是分离日期和时间,以便我可以分别处理它们。它们需要以 yyyyjjj.iii 格式结束,其中 j 是一年中的天数,i 是一天中时间的十进制值(12:00 为 0.5)。我会在某个时候需要时间,只是还没有。

标签: r vector indexing strsplit


【解决方案1】:

只需使用as.Date 即可摆脱时间组件:

x <- c("10/05/1997 00:00:00", "11/05/1997 00:00:00", "12/05/1997 00:00:00")  
as.Date(x,"%m/%d/%Y")

"1997-10-05" "1997-11-05" "1997-12-05"

【讨论】:

  • 谢谢!这绝对有助于本节。不过,我稍后需要时间。有没有办法以同样的方式剥离时间?
  • @DanielWilkerson 通常情况下,最好在按时进行操作时保留日期。例如,如果你想知道从 23:00 到第二天 1:00 有多少小时,R 必须知道它不是同一个日期。对于 date_time 对象,经典的是 as.POSIXct。另外,查看lubridate 包,它非常适合处理各种日期。你提到了十进制日期:包有一个decimal_date 函数,它也处理时间。
  • 感谢您的回复!我一定会深入研究你提到的包。目前的担忧是我正在准备数据以进入两个不同的模型,并且该模型期望日期采用奇怪的格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2022-11-21
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多