2016-05-27 17 views
-2

Ich habe den folgenden Datenrahmen mit dem Datum 23/09/15 in einer numerischen Zeichenfolge.Ändern Sie die numerische Zeichenfolge in das Datumsformat

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

Ich möchte die Spalte "Datum" ändern, so dass es "23/09/15" ist. Die einfachste Weg, dachte ich, dies zu tun war einfügen „/“ nach Charakter 2 und 4

Ich habe versucht, es auf diese Weise tun:

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

bekam aber den Fehler:

Fehler in den Daten $ Datum: $ Operator ist ungültig für die Atom Vektoren

auch die Bearbeitung versucht, das Datumsformat mit:

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

Die Kolumne kam mit NA zurück. Warum?

+0

Try 'as.Date (as.character (dat $ Date), format = "% d% m% y")' – count

Antwort

2

Eine Möglichkeit wäre, Verwenden Sie dmy von 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" 

Es wäre besser, es zu speichern, wie Date Format. Aber, wenn das Format erforderlich ist anders

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

Sie könnten tun

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

oder

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

Wenn jedoch df ein Vektor ist, dann gibt es keine $ subsetting Option:

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

Können Sie mir erklären, was die gsub Geht das bitte? – Bonono

+1

Es ersetzt alle Übereinstimmungen durch die Übereinstimmung und einen Schrägstrich. Eine Übereinstimmung besteht aus zwei beliebigen Zeichen, auf die nicht die leere Zeichenfolge folgt, die vom Rand eines Worts bereitgestellt wird. – lukeA

Verwandte Themen