[英]R : Stacking multiple columns
我正在嘗試重新整理我在線提取的數據集。 聯機表的格式被設置為使得兩個並排的表使用相同的列名。 (日期,價格|日期,價格)。
>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中的stack函數和reshape2包,但由於數據不是全數字的,所以它不起作用。 我嘗試了其他方法來創建僅包含兩個日期變量的數據框,然后將它們堆疊在新的數據框中,但這仍然行不通。 無論如何,下面是我用來嘗試堆疊變量的代碼。
> 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還是有些陌生。 先感謝您。
我認為這應該可以解決問題-由於您的數據似乎已經按照正確的順序排列,因此最后一行可能沒有必要。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.