2016-12-18 11 views
0

私はオンラインで引っ張ったデータセットを再編成しようとしています。オンラインのテーブルは、同じ列名を使用して2つのテーブルが並んでいるようにフォーマットされています。 (日付、価格|日付、価格)。R:複数の列を積み重ねる

>head(data) 
        Date Price    Date.1 Price.1 
    1 December 17, 2016 1,546bp December 7, 2016 1,720bp 
    2 December 16, 2016 1,628bp December 6, 2016 1,638bp 
    3 December 15, 2016 1,714bp December 5, 2016 1,560bp 
    4 December 14, 2016 1,805bp December 4, 2016 1,511bp 
    5 December 13, 2016 1,900bp December 3, 2016 1,440bp 

それでは、私がやろうとしていることは、時系列順にそれを作るために、左側の2つの変数の下に右の2つの変数を積み重ねています。

Rでスタック関数とreshape2パッケージを試しましたが、データがすべて数値ではないため動作しません。私は、2つの日付変数のデータフレームを作成し、それを新しいデータフレーム内に積み重ねる他の方法を試しましたが、それでも機能しません。それにかかわらず、私は変数を積み重ねようとしたコードを以下に示します。

> melt(newtable12, id.vars=c('Date', 'Date.1'), variable.name='DD') 
    Date     Date.1    DD value 
    1 December 17, 2016 December 7, 2016 Price 1,546bp 
    2 December 16, 2016 December 6, 2016 Price 1,628bp 
    3 December 15, 2016 December 5, 2016 Price 1,714bp 
    4 December 14, 2016 December 4, 2016 Price 1,805bp 
    5 December 13, 2016 December 3, 2016 Price 1,900bp 
    6 December 12, 2016 December 2, 2016 Price 2,000bp 
    7 December 11, 2016 December 1, 2016 Price 1,926bp 
    8 December 10, 2016 November 30, 2016 Price 1,834bp 
    9 December 9, 2016 November 29, 2016 Price 1,746bp 
    10 December 8, 2016 November 28, 2016 Price 1,771bp 

date/date.1とprice/price.1の列を正確に積み重ねることについての洞察はありますか?それが役に立ったら、私はRのやや新しさです。前もって感謝します。

+1

ブルートフォース: 'rbindを(DF [1:2]、setNames(DF [3:4] 、名前(df)[1:2])) ' – alistaire

答えて

0

これはトリックを行うべきだと思います。データが正しい順序で表示されているように、最後の行は必要ない場合があります。

data[nrow(data) + 1:nrow(data), 1:2] <- data[, 3:4] 
data <- data[, 1:2]         # Remove excess columns 

任意の並べ替えが依然として必要である場合には、「日付」列は日付ではなく文字列としてフォーマットされている場合、あなたは試みることができる:

data <- data[order(data$Date, decreasing=T), ]  # Order by date 

そうでない場合は、「日付」の場合列が(それは完璧なソリューションにはほど遠いですが)あなたはこのような何かを適応させることができ、文字で構成されています

# Extract date information 
data$month <- unlist(strsplit(data$Date, " "))[c(T,F,F)] 
data$year <- unlist(strsplit(data$Date, " "))[c(F,F,T)] 
data$day <- unlist(strsplit(data$Date, " "))[c(F,T,F)] 
data$month <- factor(data$month, levels=month.name) 
data$day <- sapply(data$day, function(x) substr(x, 1, nchar(x)-1)) 

# Order the dataframe 
data <- data[order(year, month, day, decreasing=TRUE) 
+0

うまくいきました、ありがとうございます。 – JBreuer2

関連する問題