我有一个数据集,其中有一些日期时间,如"{datetime:2015-07-01 09:10:00"
,所以我想删除文本,然后保留日期&作为as.Date
的时间只返回日期。所以我写这段代码,但我唯一的问题是,在第二行与strsplit,它只返回我第一行的日期时间,所以擦除其他…我想知道我所有的约会时间,不仅仅是第一次。也许我想过用apply,但我不能把它弄对,我有很多错误或者用循环for?我是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
非常感谢你的帮助!
您可以使用format
参数来避免所有的strsplit:
times <- as.POSIXct(data$`Date Time`, format='{datetime:%Y-%m-%d %H:%M:%S')
(格式中出现"{datetime:"的原因是因为您提到这是字符串的格式)。
此对象包含日期和时间,然后您可以将其作为POSIXct类型的单列存储在数据框中,而不是字符串类型的两列,例如
data$datetime <- times
,但是如果你想把日期存储为日期,时间存储为字符串(如上面的例子):
data$Date <- as.Date(times)
data$Time <- strftime(times, format='%H:%M:%S')
参见?as.Date
, ?as.POSIXct
, ?strptime
了解format
参数以及日期和字符串之间的各种转换的详细信息。