将多个日期和值对合并到r中的一个日期列中

时间:2016-04-30 08:41:48

标签: r

我的数据列标题如下所示:

Date1 Variable1 Date2 Variable 2 Date3 Variable 3 Date4 Variable4

Image of data

每个日期/变量对的长度不同。

有谁知道如何组合所有日期值,以便"日期'在这一列中是这样的:

日期变量1变量2变量3变量4

1 个答案:

答案 0 :(得分:0)

我认为这可能是一项有趣的练习。

我把你的一些数据嘲笑为csv。

> raw_input <- read.csv('date variable sample.csv')
> raw_input
                 Date Variable.1           Date2 Variable.2            Date4 Variable4
1       9/12/2009         82       9/12/2009         41       15/12/2009         0
2 9/12/2009 12:00         80 9/12/2009 12:00         38 23/03/2010 16:00        71
3 9/12/2009 16:00         80 9/12/2009 16:00         42 25/03/2010 21:00        73

然后我创建了一个set.1,set.2 ...将日期,变量对分成不同的数据框。

> set.1 <- raw_input[c('Date','Variable.1')]
> colnames(set.1) <- c('Date', 'Variable')

             Date Variable
1       9/12/2009       82
2 9/12/2009 12:00       80
3 9/12/2009 16:00       80

> set.2 <- raw_input[c('Date2', 'Variable.2')]
> colnames(set.2) <- c('Date', 'Variable')

             Date Variable
1       9/12/2009       41
2 9/12/2009 12:00       38
3 9/12/2009 16:00       42

> set.4 <- raw_input[c('Date4', 'Variable4')]
> colnames(set.4) <- c('Date', 'Variable')

              Date Variable
1       15/12/2009        0
2 23/03/2010 16:00       71
3 25/03/2010 21:00       73

然后我将所有数据框与Reduce()合并。

> fin <- Reduce(function(x, y) merge(x, y, all=T, by=c("Date")), list(set.1, set.2, set.4))
> fin
              Date Variable.x Variable.y Variable
1        9/12/2009         82         41       NA
2  9/12/2009 12:00         80         38       NA
3  9/12/2009 16:00         80         42       NA
4       15/12/2009         NA         NA        0
5 23/03/2010 16:00         NA         NA       71
6 25/03/2010 21:00         NA         NA       73

您还可以规范化(忽略时间),这样您就可以对日期进行分组,但您可能不想这样做。

快乐的编码!