Re: [問題] 處理資料 效能詢問

看板R_Language作者 (讓你喜歡這世界~)時間7年前 (2016/07/06 03:17), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/5 (看更多)
因為你的敘述不是很清楚 只知道你有10萬個csv, 存在list裡 list中nrow不確定, 只知道是5的倍數 然後把資料直轉橫 解法前面兩位都寫了, 我只想補充, 如果資料結構是很固定的, 請注意你loop的方向 下面的東西雖然醜, 不過loop是18 不是 nrow(N)/5 要好看的話, 用動態變數縮一縮就可以 #### library(dplyr) data_m <- data.frame(v1=rep("6/1",5), v2=rep("a",5), v3=rep("b",5), v4=c(12:16), v5=rep(1,5), v6=c(2:6), stringsAsFactors=F) data_l <- lapply(1:100000, function(v){data_m}) data2 <- data_l %>% rbind_all() ind <- seq(1,nrow(data2),5) myV1 <- data2[ind,1] myV2 <- data2[ind,2] myV3 <- data2[ind,3] myV4 <- data2[ind,4] myV5 <- data2[ind,5] myV6 <- data2[ind,6] myV7 <- data2[ind+1,4] myV8 <- data2[ind+1,5] myV9 <- data2[ind+1,6] myV10 <- data2[ind+2,4] myV11 <- data2[ind+2,5] myV12 <- data2[ind+2,6] myV13 <- data2[ind+3,4] myV14 <- data2[ind+3,5] myV15 <- data2[ind+3,6] myV16 <- data2[ind+4,4] myV17 <- data2[ind+4,5] myV18 <- data2[ind+4,6] data_out <- data.frame(myV1, myV2, myV3, myV4, myV5, myV6, myV7, myV8, myV9, myV10, myV11, myV12, myV13, myV14, myV15, myV16, myV17, myV18, stringsAsFactors=F) ※ 引述《spiderway (spiderway)》之銘言: : - 問題: 當你想要問問題時,請使用這個類別 : [問題類型]: : 效能諮詢(我想讓R 跑更快) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 大家好, : 最近因為需要要處理一些資料,雖然有寫出要的東西,但是實在是跑太慢了,感覺要跑個 : 幾年= =,一定是我寫法不好,想來這問一下各位大大該怎個改才對,並學習一下 : 麻煩各位大大給予小魯指導,感激不盡!!! : 程式: : 讀取了全部CSV(10萬多個)存在一個大大的list裡面,要做的大概是把每一個list裡面的 : 資料都做同一件事,就是每5筆整理成1筆,然後append在一起,如下 : 1 2 3 4 5 6 1 2 3 .... : 1 6/1 a b 12 1 2 1 6/1 a b 12 1 2 13 1 3 14 1 4 15 1 5 16 1 6 : 2 6/1 a b 13 1 3 : 3 6/1 a b 14 1 4 變成1筆>>> : 4 6/1 a b 15 1 5 : 5 6/1 a b 16 1 6 : [程式範例]: : http://pastie.org/10898589 : [版本] : R version 3.3.0 (2016-05-03) : Platform: x86_64-pc-linux-gnu (64-bit) : Running under: Ubuntu 14.04.4 LTS : [關鍵字]: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.14.82 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1467746279.A.F96.html

07/07 20:14, , 1F
謝謝M大給予指導~ 不過之前到是沒用過動態變數這種
07/07 20:14, 1F

07/07 20:14, , 2F
該研究研究惹
07/07 20:14, 2F
文章代碼(AID): #1NV0Vd-M (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1NV0Vd-M (R_Language)