1. 程式人生 > >如何優雅地使用R實現行轉列

如何優雅地使用R實現行轉列

網上有網友問到:在一個資料夾下,收集了幾個股票資料的檔案,對應的股票名稱為第2列,對應的時間為第3列,對應的收盤價為第10列。 現在想做到下圖所示的效果,也就是行為時間,列為對應的股票的收盤價,如何使用R語言來實現呢? 其實非常地簡單,這個就是我們《R資料分析實戰》(http://www.datastudy.cc/to/48,請右鍵在新標籤頁中開啟連結)中的交叉分析法的一個應用,下面我們來演示一下如何實現這個效果。 資料檔案,請大家從百度盤中自行下載: allData <- NULL;  files <- list.files("D://data", recursive=T) 
#合併檔案,把所有資料合併到allData變數中 for(file in files) {  fileName <- paste("D://data//", file, sep="");  data <- read.csv(fileName, stringsAsFactors = FALSE);  if(is.null(allData)) {  allData = data.frame(data[, c(2, 3, 10)]);  } else {  allData <- rbind(allData, data[, c(2, 3, 10)]);  };  #進行交叉分析,即可得到結果
result <- tapply(allData$收盤價, list(allData$交易日期, allData$股票名稱), FUN=sum) 至於交叉分析的詳細內容,請參考《R資料分析實戰》(http://www.datastudy.cc/to/48,請右鍵在新標籤頁中開啟連結)中的章節。
http://www.datastudy.cc/to/51