2016-05-27 3 views
-2

У меня есть следующий фреймворк с датой 23/09/15 в числовой строке.Изменить числовую строку на формат даты

Date  Session 
230915  2 
230915  2 
230915  2 
230915  2 
230915  2 
230915  2 

Я хочу изменить столбец «Дата», чтобы он «23/09/15». Самый простой способ, я думал, что сделать это было вставить «/» после символа 2 и 4.

Я пытался делать это так:

sub('(?<=.{2})', '/', df$Date, perl=TRUE) 

Но получил ошибку:

Ошибка в данных $ Дата: оператор $ недопустим для атомных векторов

пытались также редактировать формат даты с:

df$Date <- as.Date(data1$Date, format="%d/%m/%Y") 

Столбец вернулся с Н.А. Зачем?

+0

Try 'as.Date (as.character (Дат $ Date), формат = "% d% м% г")' – count

ответ

2

Один из способов будет использовать dmy от lubridate

v1 <- dmy(df1$Date) 
v1 
#[1] "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23" "2015-09-23" 

Было бы лучше, чтобы сохранить его в формате Date. Но, если формат нужен отличается

format(v1, "%d/%m/%y") 
#[1] "23/09/15" "23/09/15" "23/09/15" "23/09/15" "23/09/15" "23/09/15" 
1

Вы могли бы сделать

df <- read.table(header=T, text="Date  Session 
230915  2 ") 
gsub('(..)\\B', '\\1/', df$Date) 
# [1] "23/09/15" 

или

(x <- as.Date(as.character(df$Date), format="%d%m%y")) 
# [1] "2015-09-23" 
format(x, "%d/%m/%y") 
# [1] "23/09/15" 

Однако, если df вектор, то нет никакой возможности $ Подменю:

df <- df$Date 
gsub('(..)\\B', '\\1/', df$Date) 
# Error in df$Date : $ operator is invalid for atomic vectors 
+0

Не могли бы вы объяснить мне, что GSUB есть пожалуйста? – Bonono

+1

Он заменяет все совпадения совпадением и косой чертой. Соответствие - это любые два символа, за которыми не следует пустая строка, предоставленная краем слова. – lukeA