从R中的data.frame中提取日期时间

时间:2015-07-13 11:50:02

标签: r date datetime time

我有一个数据集,其中包含一些日期时间"{datetime:2015-07-01 09:10:00"所以我想删除文本,然后保留日期& as.Date的时间仅返回日期。所以我写这段代码,但我唯一的问题是在strsplit的第二行,它只返回第一行的日期时间,所以擦掉其他...我很想得到我所有的约会时间不仅首先。我也许考虑过,但我无法做对,我有很多错误,或者可能有一个循环?我是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

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:7)

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

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

(&#34; {datetime:&#34;格式的原因是因为你提到这是你的字符串的格式)。

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

data$datetime <- times

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

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

有关?as.Date参数的详细信息以及日期和字符串之间的各种转换,请参阅?as.POSIXct?strptimeformat