2013-03-14 196 views
8

使用R,我想将两个不同列中包含的月份nb(月份)和日期nb(日期)合并成一列(日期),并使用创建的列日期格式。将月份和日期合并到一个日期列中

我的数据帧是这样的:

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 

我想的东西,如“一月-01”添加一列。

回答

9

尝试......

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 

我得到了一些来港,因为我做了随机日期,其中一些不存在的,如2月30日

+0

OK,就是它!我不希望有一年(我感兴趣的变量是30年的平均值),但我可能会找到一种方法,不要在我的斧头(我使用ggplot2)中计划一年。 – user2165907 2013-03-14 13:27:16

+2

我建议你看一下@ndoogan的解决方案,并接受它,而不是*完全*你想要的。 – 2013-03-14 13:33:33

9

我这里假设通过“日期格式”你只是意味着一个字符串,它看起来像一个日期,而不是一个合适的日期类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更好的解决方案(假设他不想要日期!) – 2013-03-14 13:26:11

+0

@ SimonO101,OP说他想在帖子底部显示“Jan-01”之类的东西:)。 – Arun 2013-03-14 13:29:39

+0

@Arun我知道,这就是为什么我说这是一个更好的解决方案:-)但有时候人们并不总是完全解释他们想要的东西。 – 2013-03-14 13:32:33

相关问题