【问题标题】:Extract dates times from a data.frame in R从 R 中的 data.frame 中提取日期时间
【发布时间】:2015-07-13 11:50:01
【问题描述】:

我有一个像 "{datetime:2015-07-01 09:10:00" 这样的日期时间的数据集,所以我想删除文本,然后保留日期和时间,因为 as.Date 只返回日期。所以我写了这段代码,但我唯一的问题是,在使用 strsplit 的第二行中,它只返回第一行的日期时间,所以删除其他的......我很想得到我的所有日​​期时间,不仅首先。我可能想过 sapply ,但我做错了我有很多错误或者可能有一个循环?我是 R 新手,所以我真的不知道如何以最好的方式做到这一点。

你能帮帮我吗?此外,如果您对时间和日期格式有其他想法或简单的方法,那您也应该很好。

data$`Date Time`=as.character(data$`Date Time`)

data$`Date Time`=unlist(strsplit(data[,1], split='e:'))[2]

date=substr(data$`Date Time`,0,10)

date=as.Date(date)

time=substr(data$`Date Time`,12,19)

data$Date=date

data$Time=time

非常感谢您的帮助!

【问题讨论】:

  • 试试sapply(strsplit(data[,1], "e:"), FUN = function(x) {x[2]})

标签: r date datetime time


【解决方案1】:

您可以使用format 参数来避免所有的strsplit:

times <- as.POSIXct(data$`Date Time`, format='{datetime:%Y-%m-%d %H:%M:%S')

(格式中“{datetime:”的原因是因为您提到这是您的字符串的格式)。

该对象同时包含日期和时间,然后您可以将其作为 POSIXct 类型的单列而不是字符串类型的两列存储在数据框中,例如

data$datetime <- times

但如果您确实想将日期存储为 Date 并将时间存储为字符串(如上例所示):

data$Date <- as.Date(times)
data$Time <- strftime(times, format='%H:%M:%S')

请参阅?as.Date?as.POSIXct?strptime,了解有关 format 参数以及日期和字符串之间各种转换的更多详细信息。

【讨论】:

  • 非常感谢!!此外,它仅适用于约会,但如果我遇到同样的问题,例如:“subject:MMM”,如果我只想要“MMM”,你将如何解决这个问题,因为再次使用 strsplit(),我失去了所有级别“MMM, ABC、JKL……”,好吗?
  • 对不起,我发现了这个:data$Subject
猜你喜欢
  • 2014-11-20
  • 2020-12-19
  • 2021-12-30
  • 2013-04-17
  • 2018-10-29
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多