0
我的數據列標題看起來像這樣:合併多個日期和值對插入一個日期欄r中
日期1變量1日期2變量2 DATE3變量3 Date4 Variable4
每個的長度日期/變量對是不同的。
有誰知道如何將所有日期值,使「日期」是這樣的一列組合:
日期變量1變量2變量3變量4
我的數據列標題看起來像這樣:合併多個日期和值對插入一個日期欄r中
日期1變量1日期2變量2 DATE3變量3 Date4 Variable4
每個的長度日期/變量對是不同的。
有誰知道如何將所有日期值,使「日期」是這樣的一列組合:
日期變量1變量2變量3變量4
我想這可能是一個有趣的練習。
我嘲笑你的一些數據到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
然後我創建了一個設定1,set.2 ...來分隔日期,變量對成d不同的數據幀。
> 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
您還可以規範化(忽略時間),以便您可以將日期分組,但您可能不想這樣做。
快樂編碼!
我做了上述操作,並在使用'Reduce()'函數之前使用'na.omit()'在每個數據幀中刪除NA。 – Jake
在你的過程之前和之後添加一些示例數據,所以它將清楚你正在嘗試做什麼。這樣你會得到更好的答案。 – Hypnobrew
根據示例顯示預期的輸出效果會更好。請使用'dput'來顯示數據而不是圖像。 – akrun