2015-10-28 1 views
-3

У меня есть вектор с датой в качестве символаДобавление разделителя DateTime

x <- "2015-02-01 09:05:23" 

Я хочу, чтобы преобразовать его в DateTime объекта

x <- as.POSIXct(strptime(x, "%Y-%m-%d %H:%M:%S"), tz = "GMT") 

, а затем «Т» в качестве разделителя между датой и временем (см XML Schema), чтобы получить следующие выходные данные

"2015-02-01T09:05:23" 

Как получить «T» сепаратор в Струна?

+0

Что такое 'S'? Суббота или воскресенье? Если вы добавите более подробную информацию, 'format (x,"% Y-% m-% d% a% H:% M:% S ")' должен работать: '" 2015-02-01Sun09: 05: 23 "' –

+0

извините, мне пришлось отредактировать мой вопрос! Я не ищу рабочий день, но для сператора – feder80

+1

Тогда 'format (x,"% Y-% m-% dT% H:% M:% S ")': '" 2015-02-01T09: 05: 23 "' –

ответ

5

Вы можете использовать format функцию, чтобы получить символьный объект.

x <- "2015-02-01 09:05:23" 
format(as.POSIXct(x, "GMT"), "%FT%T") 
#[1] "2015-02-01T09:05:23" 
1
x <- "2015-02-01 09:05:23" 
d <- as.POSIXct(strptime(x, "%Y-%m-%d %H:%M:%S"), tz = "GMT") 
w <- substr(weekdays(d),1,1) # 1,1 selects the first letter of the day 

y <- paste0(strsplit(as.character(d)," ")[[1]][1],w,strsplit(as.character(d)," ")[[1]][2]) 

y 
[1] "2015-02-01S09:05:23" 

, если вы просто хотите написать T:

paste0(strsplit(as.character(d)," ")[[1]][1],'T',strsplit(as.character(d)," ")[[1]][2]) 

[1] "2015-02-01T09:05:23" 
1

Вы можете заменить пространство с T в этом случае с помощью gsub

x <- "2015-02-01 09:05:23" 
x <- as.POSIXct(strptime(x, "%Y-%m-%d %H:%M:%S"), tz = "GMT") 
gsub(" ", "T", x) 

#[1] "2015-02-01T09:05:23" 

В соответствии с комментарием @Avinash Радж «s, используя только sub будет достаточно в этом случае.

sub(" ", "T", x) 
#[1] "2015-02-01T09:05:23" 
+0

sub будет достаточно .. –

+0

@AvinashRaj да, вы правы. Не знал разницы между ними. Погубил его. Благодарю. Обновлен ответ. –