2013-03-14 14 views
8

Mit R, möchte ich in einer Spalte (Datum) den Monat nb (Monat) und den Tag nb (Tag) in zwei verschiedenen Spalten enthalten und verwenden Sie die Spalte erstellt in ein Datumsformatkombinieren Monat und Tag in eine Datumsspalte

meine Datenrahmen sieht wie folgt aus:

St Dep Month Day 
A 2 1 1 
B 2 1 1 
B 2 2 1 
A 5 1 1 
A 7 1 1 
C 2 1 1 
C 5 1 1 

Und ich möchte eine Spalte mit so etwas wie „Jan-01“ hinzuzufügen.

Antwort

9

Try this ...

df <- data.frame(Month = sample(1:12 , 10 , repl = TRUE) , Day = sample(1:30 , 10 , repl = TRUE)) 
df$Date <- as.Date(paste(df$Month , df$Day , sep = ".") , format = "%m.%d") 

df 
#  Month Day  Date 
# 1  1 8 2013-01-08 
# 2  1 17 2013-01-17 
# 3  7 23 2013-07-23 
# 4  11 21 2013-11-21 
# 5  3 30 2013-03-30 
# 6  12 15 2013-12-15 
# 7  2 30  <NA> 
# 8  7 10 2013-07-10 
# 9  1 16 2013-01-16 
# 10  8 1 2013-08-01 

ich einige NAs bekam, weil ich zufällig Daten aus, von denen einige nicht existieren, wie 30. Februar

+0

OK, das ist es! Ich möchte nicht das Jahr haben (die Variable, an der ich interessiert bin, ist ein Durchschnittswert von 30 Jahren), aber ich kann einen Weg finden, das Jahr nicht in meiner Axt darzustellen (ich benutze ggplot2). – user2165907

+2

Ich schlage vor, Sie betrachten die Lösung von @doogan und akzeptieren, dass es stattdessen scheint * genau * was Sie wollen. –

9

Ich gehe davon aus, dass hier von „Datum Format "Sie meinen nur eine Zeichenfolge, die wie ein Datum aussieht, statt eine richtige Datumsklasse in R.

data <- data.frame(Month=c(1,5,2), Day=c(1,2,3)) 
data$MonthDay <- paste(month.abb[data$Month], data$Day, sep="-") 
data 
# Month Day MonthDay 
# 1  1 1 Jan-1 
# 2  5 2 May-2 
# 3  2 3 Feb-3 
+0

+1 Viel bessere Lösung (vorausgesetzt, er will keine Daten!) –

+0

@ SimonO101, das OP sagt, er will etwas wie "Jan-01" am Ende des Posts :). – Arun

+0

@Arun Ich weiß, deshalb habe ich gesagt, das ist eine viel bessere Lösung :-) Aber manchmal erklären die Leute nicht immer genau, was sie wollen. –

Verwandte Themen