R_Language 板


LINE

※ 引述《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 : [關鍵字]: 覺得哪裏怪怪,我先附上我目前弄出來的結果 library(pipeR) library(plyr) library(dplyr) library(tidyr) # data generation (csv_files就是你的ldf) num_csv <- 1e1 num_xlvls <- 2 num_ylvls <- 2 sampleSize_csv <- 1e2 csv_files <- lapply(1:num_csv, function(i){ expand.grid(letters[1:num_xlvls], letters[1:num_ylvls], stringsAsFactors = FALSE) %>>% `[`(sample(1:nrow(.), sampleSize_csv, TRUE), ) %>>% modifyList(setNames(lapply(1:3, function(j){ sample(1:100, sampleSize_csv, TRUE) }), paste0("Var", 3:5))) %>>% tbl_df }) # append一起 csv_files_append <- lapply(csv_files, function(subdf){ nest(subdf, -Var1, -Var2) %>>% mutate(data = lapply(data, function(x){ as.matrix(x) %>>% t %>>% as.vector })) }) csv_files大概會像這樣: [[1]] Source: local data frame [100 x 5] Var1 Var2 Var3 Var4 Var5 <chr> <chr> <int> <int> <int> 1 b a 62 29 94 2 a a 11 26 6 3 a a 49 83 32 4 b b 45 22 44 5 a b 83 57 3 6 b a 31 68 5 7 a a 24 79 71 8 a a 2 70 61 9 a a 93 22 93 10 a b 21 52 2 .. ... ... ... ... ... 然會有這樣的data.frame num_csv個 csv_files_append會長這樣: [[1]] Source: local data frame [4 x 3] Var1 Var2 data <chr> <chr> <list> 1 b a <int [84]> 2 a a <int [66]> 3 b b <int [81]> 4 a b <int [69]> 一樣會有num_csv個 但是問題是你現在要怎麼把這num_csv個csv合併再一起 還是我誤會你的意思,你一個csv只會有一個Var1跟一個Var2嗎? 如果只有一個,那每一個csv_files_append就會大概長像這樣: [[1]] Source: local data frame [4 x 3] Var1 Var2 data <chr> <chr> <list> 1 b a <int [84]> 那最後在do.call加上rbind就會像上面多個level那樣... 只是每一個csv_files的Var1跟Var2都要是不同組合就是... 如果你能更完整陳述問題,我就能再看要怎麼寫~~ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.232.185.160
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1467646043.A.971.html ※ 編輯: celestialgod (36.232.185.160), 07/04/2016 23:32:56
1F:推 spiderway: 謝謝C大!我用了一下是正確的,但是說那些程式碼我都沒 07/05 22:41
2F:→ spiderway: 用過XD 真的要好好找時間研究一下了,原來用apply差那 07/05 22:42
3F:→ spiderway: 麼多...這好快就跑好了,我現在在跑do.call(rbind,csv) 07/05 22:42
4F:→ spiderway: 跑好幾個小時了還沒好,這樣正常嗎QQ我沒很會用這些fun 07/05 22:43
5F:→ celestialgod: do.call通常不會慢,資料量過大,可能是記憶體爆掉 07/06 00:27
6F:→ celestialgod: 看看記憶體使用量 07/06 00:27
7F:推 spiderway: c大 想問一下 do.call有辦法看用到第幾筆了嗎 跑半天了 07/07 01:38
8F:→ spiderway: 記憶體使用率40% 以前幾乎沒用過do.call 不太熟 07/07 01:39
9F:→ spiderway: XD跑好了 但是我不太會用大大的這個包 data的list 07/07 12:54
10F:→ spiderway: 要怎轉變成像一般的data.frame那樣 我直接存csv不給存 07/07 12:55
11F:推 spiderway: 拜託求救了~~~只差這步 有哪裡可以看這些文件的嗎 謝謝 07/07 20:07
do.call看不到用到第幾筆,他是一次做binding 你有三個,他就直接rbind(a, b, c) 他不是一次一組,不過記憶體沒爆的情況下,做法應該就沒差了 該等還是要等(攤手,改用bind_rows看看會不會有差 這裡直接存csv當然會有問題,因為最後一欄不是長度為一的向量 這裡就是看你最後一欄要怎麼儲存了,所以可能麻煩你回一篇文章 看後續要怎麼做了,我晚一點再測試看看10萬個 ※ 編輯: celestialgod (111.246.27.218), 07/07/2016 21:11:27
12F:推 spiderway: 好的 我回一篇講清楚一點我要的 謝謝 麻煩你們了! 07/07 21:35







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP